注意:C#3.5應用程序在遠程服務器上調用SQL Server 2005數據庫。SQL SELECT WHERE value IN('巨大的值列表')
我正在開發一個兩步過程。
1)我在Windows索引服務中搜索包含給定單詞的文件列表,例如「Bob」。
2)然後,我需要通過從索引服務中傳入文件名列表來檢索SQL DB中DOCUMENT表的行列表。
此刻,我從索引服務和DOCUMENT表中的所有行中檢索列表,然後在代碼中對它們進行過濾。這是不實際的,因爲有超過10,000個文檔並且數據庫通過防火牆。
我認爲創建一個查詢,如:
可採用DocName選擇從文檔中可採用DocName WHERE IN({從索引服務的文件列表})
...但鑑於文件的列表可能是數千它將無法工作。
那麼,我能做的最好的事情是什麼?我不想在數據庫中查詢所有10,000多行並將它們傳回防火牆(需要10分鐘)。我不知何故需要傳入從索引服務檢索到的文件名列表。
linq如何在這種情況下工作?
任何建議非常感謝。
也許您可以將索引服務中的文件複製到數據庫表中,例如每晚?然後你可以在兩張桌子上做一個簡單的JOIN。我認爲你應該把所有的數據放在一起,然後才能查詢它,現在你把所有的東西都放在客戶端上,看起來很麻煩。 – Bazzz
簡答題:將索引服務中的名稱插入臨時表中,加入文檔表和臨時表。 – Alex