2012-06-22 92 views
0

我有一個LINQ to Entity查詢運行速度非常慢。該查詢在特定數據庫上執行一些計算邏輯,然後將結果傳遞給ViewModel。查詢非常快,直到我在查詢底部添加了4個select語句。我需要選擇語句才能返回結果響應的集合。爲什麼查詢運行速度如此緩慢?Linq to Entity Query非常慢

var data = from SurveyResponseModel in db.SurveyResponseModels 
         group SurveyResponseModel by SurveyResponseModel.MemberId into resultCount 
         select new ResultsViewModel() 
         { 

          YesBarriersOthersResult = resultCount.Select(r => r.YesBarriersOthers), 
          NoBarriersOthersResult = resultCount.Select(r => r.NoBarriersOthers), 
          TotalResponsesResult = db.SurveyResponseModels.Count(), 
         }; 




      return View(data); 
+3

我會檢查實際的SQL命令。也許一些查詢執行多次,或EF創建了一些瘋狂的子查詢? –

+0

這是個好建議。我在開發中使用SQLCOmpact版本,但切換到SQL Server 2008R2後現在似乎更快了。 – user547794

回答

3

這是我很難告訴你什麼也正是錯在這裏,但已經面臨着類似的問題的ORM和所有的,我可以建議調試問題的最好辦法就是找出實際生成的SQL語句並針對數據庫運行。很多時候你的ORM可能會運行太多的sql語句來獲得相同的簡單結果。

+1

是的。 @ [Vishal Kumar]是對的。檢查sql語句及其過程的最好方法是使用** SQL Profiler **。如果你安裝了它,就很容易創建一個跟蹤並查看SQL方面的實際情況。 – Tohid