我有一個連接到SQL數據庫並檢索數據的Winforms應用程序,然後在執行操作之前,應用程序需要檢查數據是否存在於另一個SQL數據庫中。C#/ SQL效率查詢
我見過類似的查詢,但大多數都傾向於SQL,我想知道的是下面哪兩個選項在整體性能方面更好。我已經考慮兩種方法:在C#
1,創建兩個列表,填充它們,然後檢查是否從第一個列表中的值在接下來的列表中存在:
List<T> firstList = new List<T>();
List<X> secondList = new List<X>();
firstList = firstList.populate(); // SQL Stored Procedure to populate list
secondList = secondList.populate(); // SQL Stored Procedure to populate list
foreach(var item in firstList)
{
if((x => x.value == item.value))
{
//do some action
}
}
2.創建一個列表C#和執行存儲過程以檢查作爲參數傳遞的值是否存在於SQL數據庫中的方法。一旦列表中填充我會遍歷它,並執行新的方法返回一個布爾值:
List<T> firstList = new List<T>();
firstList = firstList.populate(); // SQL Stored Procedure to populate list
foreach(var item in firstList)
{
bool exists = false;
exists = firstList.checkValue(item.value); // SQL Stored Procedure to check if value exists
if(exists)
{
//do some action
}
}
我不知道它是否是更好地執行許多SQL查詢和減少內存使用或執行更少的查詢和使用記憶。這個應用程序將運行在一個應該有32Gb RAM的小型應用服務器上。
我也願意使用其他技術,如果我的任何一種方法效率不高。
你真正的意思的數據是2級獨立的數據庫* *或2個獨立的*表*? – Neil
在這種情況下,它是兩個單獨的數據庫。 – Daniel
你有沒有在相關領域的指數?如果你這樣做,那麼SQL解決方案將更有效率。 –