我有大约 14,000 行数据。如果使用以下 EF 查询,加载时间会很长,因为我怀疑它正在加载所有 14,000 行,然后才完成任何额外的过滤。这是我的存储库中的 Select 方法。
Public Function SelectAll() As IEnumerable(Of be_Posts) Implements IPostRepository.SelectAll
Dim posts As IEnumerable(Of be_Posts)
Using db As Ctx = New Ctx
posts = db.be_Posts.OrderByDescending(Function(x) x.DateCreated).ToList
Return posts
End Using
和控制器:
Function Index(page As Integer?) As ActionResult
Dim PageSize = System.Web.Configuration.WebConfigurationManager.AppSettings("PageSize")
Dim pageNumber As Integer = If(page, 1)
Dim posts = _repo.SelectAll()
Return View(posts.ToPagedList(pageNumber, PageSize))
End Function
视图中的助手:
@Html.PagedListPager((Model), Function(page) Url.Action("Index", New With { _
.page = page _
}), PagedListRenderOptions.ClassicPlusFirstAndLast)
例如,现在如果添加一个take
子句,.Take(500)
那么事情会大大加快。我怎样才能使这个查询更快,并且所有记录仍然有效?我还使用 Troy Goode 的 PagedList 扩展来获得分页功能。只要我得到几百条记录,一切都很好。那么该怎么办?我能找到的大多数(如果不是全部)使用 Troy 库的分页示例都直接在控制器中包含所有代码。