2012-11-29 30 views
0

我有一個LINQ查詢。當我運行查詢時,需要很多時間來執行操作。我怎樣才能修改查詢執行良好。這裏是LINQ查詢。如何爲此編寫好的LINQ查詢?

查詢

var model = (from items in Db.Items 
         where items.ItemNo == DD.ItemNumber 
         select new ViewModel() 
         { 
          INo = items.ItemNo, 
          BTags = (from asd in Db.BibContents where asd.BibId == items.BibId && asd.TagNo == "245" && asd.Sfld == "a" select asd.Value).FirstOrDefault(), 
          Sid = (from stat in Db.ItemStatus1 where stat.Id == items.StatusId select stat.Description).FirstOrDefault(), 
          Option = DD.Option 
         }).ToList(); 
+1

在這些表上創建索引。 –

+0

您可以給我們一些關於您的實體模型的更多信息......理想情況下,您將使用導航屬性而不是子查詢。 –

+0

我正在使用實體框架。 – Dhev

回答

3

您應分析SQL事件探查器和查詢分析器查詢。問題可能是表上的索引。

+1

+1。肯定地分析了什麼SQL實體框架在Profiler中生成 - 有時它決定運行的查詢是非常令人震驚的! –

0

首先,儘管您的查詢總是與數據庫對象一起工作,但您最好在SQL中完成所有工作,並將結果僅帶到LINQ。

這可能會提高你的表現。