我有一個查詢,我想返回與值列表關聯的所有行。你可以這樣寫:通過參數列表篩選SQL查詢
select * from TableA where ColumnB in (1, 2, 3, 5)
我可以在C#中生成這個查詢並執行它。然而,這顯然不太理想,因爲它不使用參數,它會在嘗試緩存查詢計劃時受到影響,並且顯然很容易受到SQL注入攻擊。
另一種方法是寫爲:
select * from TableA where ColumnB = @value
這可以通過C#來執行許多次,但是這將導致以N DB命中。
我能看到的唯一的另一種選擇是創建一個臨時表並加入它,但我沒有看到這一點,因爲它會更復雜,並受到與第一個選項相同的限制。
我正在使用SQL服務器和OLDB,創建查詢不是問題。我正在嘗試創建最高效的流程。
這三種方法哪一種更高效?我錯過了另一種選擇嗎?
你想如何執行查詢? EF,LINQ,ADO,OLEDB? – paul 2012-07-19 13:05:33
和哪個服務器? MySql,MsSql,其他? – mmdemirbas 2012-07-19 13:07:46
OLDB和MsSQL,問題更新 – Liath 2012-07-19 13:19:33