2012-07-10 41 views
0

我在我的MV3實體項目這個LINQ表達式優化長期運行時間LINQ表達式

SubCatNews = (from c in context.NewsInSubCats 
     where 
     (c.SubCat.Visible == true && 
      c.SubCatNews.Visible == true && 
      c.SubCatNews.StatusID == 1 && 
      c.SubCatNews.NewsTypeID != 5 && 
      (c.SubCatID == catId || c.SubCat.ParentId == catId)) 
orderby c.SubCatNews.SubCatNewsID descending 
     select c.SubCatNews) 
.Distinct() 
.OrderByDescending(p => p.SubCatNewsID) 
.Skip(pageIndex * pageSize) 
.Take(pageSize); 

我有SubCatNews表(我的新聞)

這些記錄23000的記錄量,使用NewsInSubCats表對於assocating組新聞

和團體都在SUBCAT表

這個工作,但是從SQL Server獲取proccess有很長一段時間執行並返回從SQL Server中

我託管站點3與該結構中的虛擬專用服務器具有2 GB RAM

是本LINQ表達式最優化時間超時Exeption?

或者我必須使用SQL Server索引

感謝名單

回答

0

我建議。在sql server上創建索引並編寫存儲過程並傳遞所有必需的參數(包括pageindex和pagesize),並在SQL端進行篩選並僅返回所需的數據。

要創建存儲過程,您可以檢查以下URL。

http://weblogs.sqlteam.com/randyp/archive/2005/06/23/6335.aspx

http://msdn.microsoft.com/en-us/magazine/gg650669.aspx

http://basquang.wordpress.com/2011/03/18/stored-procedures-paging-solution-in-asp-net-mvc-2/

+0

我guese這項工作,我要求一個CPU核心和更多的內存從我的服務器供應商了。坦克爲您的答覆 – 2012-07-10 07:22:09