我在mv3-entity项目中有这个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表将组关联到新闻
和组在SubCat表中
这个工作,但是从sql server获取proccess很长时间执行并在大多数时间从sql server返回Timeout Exeption
我在具有2 GB RAM的虚拟专用服务器中托管了具有此结构的3个站点
这是Linq表达式优化吗?
或者我必须在sql server中使用索引
感谢名单
答案 0 :(得分:0)
我会建议。在sql server上创建一个索引并编写一个存储过程并传递所有必需的参数(包括pageindex和pagesize),并在SQL端进行过滤并仅返回所需的数据。
要创建商店程序,您可以查看以下网址。
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/