我有一個linq查詢導致一些超時問題。基本上,我有一個查詢返回一個包含大約500,000條記錄的表的前100個結果。Linq。幫我調整一下!
下面是該查詢:
using (var dc = CreateContext())
{
var accounts = string.IsNullOrEmpty(searchText)
? dc.Genealogy_Accounts
.Where(a => a.Genealogy_AccountClass.Searchable)
.OrderByDescending(a => a.ID)
.Take(100)
: dc.Genealogy_Accounts
.Where(a => (a.Code.StartsWith(searchText)
|| a.Name.StartsWith(searchText))
&& a.Genealogy_AccountClass.Searchable)
.OrderBy(a => a.Code)
.Take(100);
return accounts.Select(a =>
}
}
奇怪的是它是導致超時第一個LINQ查詢。我認爲通過做'Take'我們不需要掃描所有500k條記錄。但是,這一定是正在發生的事情。我在猜測,發現什麼是「可搜索」的連接正在引發這個問題。我無法對錶格進行非規範化......所以我想知道是否有一種方法來重寫linq查詢以使其更快地返回......或者如果我只需將此查詢寫爲存儲過程(和如果是這樣,它可能看起來像什麼)。謝謝。
哪些列在每個表中編入索引? – 2010-04-29 20:47:51