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サーバーからのフェッチプロセスには長い時間がかかり、ほとんどの場合、SQLサーバーからタイムアウト例外が返されます

2 GB RAM の仮想専用サーバーで、この構造の 3 つのサイトをホストしました

このLinq式は最適化されていますか?

または、SQLサーバーでインデックスを使用する必要があります

ありがとう

4

1 に答える 1

0

私は提案します。SQL サーバーでインデックス作成を作成し、ストア プロシージャを記述して、必要なすべてのパラメーター (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 に答える