我有三個表最有效的方法,可以說「表一」「表二」和「三表」。 所有三個都有不同的模式,但是,表一和表二有一個匹配列。
表一目前是50,000行。表二是五千,但會增加。 對於表2中的每一行,我需要檢查列B是否等於表1中的列B.如果是我需要列A值。
我所做的
最初,當這個表格是沒有這麼大我有一個嵌套的循環檢查值
foreach(DataRow r in TableOne)
{
foreach(DataRow s in TableTwo)
{
if(r.ItemArray[1] == s.ItemArray[1])
doSomethingWith(r.ItemArray[0]);
}
}
不過,我覺得這隻會成爲隨着桌子尺寸的增加,大量追索權問題。
我認爲下面的,但我不知道是否有未來證明自己進一步更好的辦法:
SELECT TableOne.ColumnB, TableTwo.ColumnB, TableOne.ColumnA
FROM TableOne
LEFT JOIN ColumnA on TableOne.ColumnB = TableTwo.ColumnB
編輯 更清楚 - 這是發生在C#應用程序,而不是服務器端。
你在用linq嗎?另外,讓我知道你正在使用的是哪個sql版本 –
1.你在SQL Server而不是c#中做這個很好嗎? 2.什麼是DBMS?因爲sql不是.. – DarkKnight
另外,如果你直接在SQL端處理這一點,而不是在數據層和業務邏輯之間進行往返,那將會很好。 –