-3
我有一個名爲ItemId的屬性,可能有1000個對象的數組。 ItemId引用表主鍵。通過主鍵值數組搜索
如何通過主鍵獲得選擇1000行的最佳性能?什麼是最佳做法?
- 在C#循環中循環1000次,即1000次往數據庫往返循環?
- 一個包含1000個項目的列表中的sql?
- 使用EF並將對象數組與表連接起來。
有沒有更好的辦法?
我有一個名爲ItemId的屬性,可能有1000個對象的數組。 ItemId引用表主鍵。通過主鍵值數組搜索
如何通過主鍵獲得選擇1000行的最佳性能?什麼是最佳做法?
有沒有更好的辦法?
通常通過限制查詢次數來達到最佳性能。但是,使用WHERE ... IN
的速度也會很慢,因爲在循環訪問的每一行中都會執行IN
子句中的子查詢。這取決於你的數據庫引擎。
您可以(也應該總是)通過嘗試所有三種方法來測試性能。只有當你比較特定系統的性能時,你纔會知道。要了解性能爲何如此高,可以在查詢前使用EXPLAIN
,以查看發生了什麼。
在您的具體情況中,您可能會發現(使用性能測試)添加一個包含陣列的臨時表,然後加入可能具有最佳的低級性能。使用實體框架應該具有可比性,但這取決於實施。
您應該測試一下選項,但我會假定表值參數是最好的。 –
表值參數似乎是我實現中的最佳選項。然後我將限制往返數據庫的數量。謝謝! – Mike