2011-09-06 36 views
-1

我怎麼能改善以下LINQ查詢我有更好的表現。有什麼更好的寫作方式:我該如何改進我的下面的LINQ查詢?

result = (from cd in dataContext.vRetailerWeeks 
      where cd.MasterTrackingGroupID == masterTrackingGroupId 
      && cd.RetailerWeek <= (from cd1 in dataContext.vCalendarDates 
            where 
             cd1.MasterTrackingGroupID == masterTrackingGroupId && 
             cd1.CalendarDate == retailerWeekDateTime 
            select cd1.RetailerWeek).FirstOrDefault() 
      orderby cd.RetailerWeek descending 
      select cd.RetailerWeek).Take(weekNo).ToList(); 
+4

什麼是錯的,現在的表現? –

+1

您是否需要使用'ToList()'調用撤回列表?是數據庫端還是內存端的瓶頸? – skaz

+0

如果你只是想在你的代碼的通用反饋,http://codereview.stackexchange.com/可能是一個更合適的地方。 – Heinzi

回答

3

那麼,問題是如果你需要改善你的LINQ查詢或你的索引在數據庫中。

,最好的辦法是採取即開始生成的SQL(使用SQL事件探查器,或在DataContext記錄它)。

如果你很高興與生成的SQL,沒有必要futher改變LINQ查詢,它已經完成了它的任務。因此,請在Management Studio中嘗試此SQL並檢查查詢計劃。從那裏你可以優化你的索引。

如果你不快樂,與LINQ查詢前進。