有一个基于 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
更新
我在下面更新了我的逻辑代码,orderby
用于之前skip
和take
语句。一切顺利。谢谢大家的帮助。
books = (from b in db.Books
orderby b.Name descending
select b)
.Skip((page - 1) * pageSize)
.Take(pageSize)
.ToList();