Asp.net mvc 3 如何在具有大量结果的分页网格上提高查询速度?

Asp.net mvc 3 如何在具有大量结果的分页网格上提高查询速度?,asp.net-mvc-3,ibm-midrange,mvccontrib,Asp.net Mvc 3,Ibm Midrange,Mvccontrib,我正在从IBMi查询数据并将其显示在网格中。显示所有记录的目的有两个原因: 现有的软件没有被正确使用,人们也没有关闭这些项目。(用户/培训问题是,但请参见其他项目)。因此,将列表缩小到只打开的项目是不准确的 它允许用户查询所有历史记录(这是基于属性的,历史记录可能很重要) 然而,目前有28000个项目,并且将不断增加。现在,我正在使用MvcContrib网格。这是我的密码: public ActionResult Index(GridSortOptions gridSortOptions

我正在从IBMi查询数据并将其显示在网格中。显示所有记录的目的有两个原因:

  • 现有的软件没有被正确使用,人们也没有关闭这些项目。(用户/培训问题是,但请参见其他项目)。因此,将列表缩小到只打开的项目是不准确的
  • 它允许用户查询所有历史记录(这是基于属性的,历史记录可能很重要)
  • 然而,目前有28000个项目,并且将不断增加。现在,我正在使用MvcContrib网格。这是我的密码:

        public ActionResult Index(GridSortOptions gridSortOptions, int? page, int? filterPropertyUniqueKey, int? filterPermitNumber)
        {
            #region Filter and Sort
            var permits = buildingPermitRepository.GetOpenPermits();
    
            // Set default sort and apply filters
            if (filterPermitNumber.HasValue)
            {
                permits = permits.Where(w => w.PermitId == filterPermitNumber.Value);
            }
    
            // TODO add more filters
    
            if (String.IsNullOrEmpty(gridSortOptions.Column))
            {
                gridSortOptions.Column = "DateApplied";
                gridSortOptions.Direction = SortDirection.Descending;
            }
    
            var permitsPagedList = permits.OrderBy(gridSortOptions.Column, gridSortOptions.Direction).AsPagination(page ?? 1, 20);
            #endregion
    
            var viewModel = new PermitIndexViewModel
            {
                BuildingPermits = permitsPagedList,
                GridSortOptions = gridSortOptions
            };
    
            return View(viewModel);
        }
    

    您建议我做些什么来提高显示速度?至少对于后续视图。

    我不知道AsPagination方法是如何工作的,但我们使用Skip和Take方法。 因此,在完成所有筛选后,您的代码可能如下所示:

    var permitsPagedList = permits.OrderBy(gridSortOptions.Column, gridSortOptions.Direction).Skip(pageSize * (page -1)).Take(pageSize).ToList();
    
    这个简单的方法只返回我们实际需要的行