0

我的 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 获取过程需要很长时间执行并在大多数时间从 sql server 返回 Timeout Exeption

我在具有 2 GB 内存的虚拟专用服务器中托管了 3 个具有这种结构的站点

这是 Linq 表达式优化吗?

或者我必须在 sql server 中使用索引

谢谢

4

1 回答 1

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/

于 2012-07-10T06:21:32.127 回答