ASP.NET MVC3 に基づく書籍管理システム Web アプリケーションがあります。書籍のインデックス ページをクリックすると、データ クエリが非常に遅くなり、ユーザーは応答を数秒待たなければなりません。以下の BookController の Action Index のコード:
public ViewResult Index(string sortOrder, int? page)
{
ViewBag.NameSortParam = string.IsNullOrEmpty(sortOrder) ? "desc" : "";
ViewBag.CurrentSort = sortOrder;
BookModel books = from b in db.Books select b; // db = new BookContext();
switch (sortOrder) {
case "desc":
books = books.OrderByDescending(b => b.Name);
break;
default:
books = books.OrderBy(b => b.Name);
break;
}
int pageSize = 15;
int pageNumber = (page ?? 1);
return View(books.ToPagedList(pageNumber, pageSize));
}
私の意見では、遅い主な理由は、すべてのデータの準備が整うまでサーバーがクライアントに応答しないことです。このプロセスには多くの時間がかかります。
この問題を解決する方法がわかりません。この場合、データ クエリのパフォーマンスを向上させる方法はありますか? ありがとうございました!
更新: バックエンド データベースは SQL Server Compact Edition 4.0 です
UPDATE
以下のロジック コードを更新し、 andステートメントのorderby
前に使用します。すべてがうまくいきます。助けてくれてありがとう。skip
take
books = (from b in db.Books
orderby b.Name descending
select b)
.Skip((page - 1) * pageSize)
.Take(pageSize)
.ToList();