Какой метод нумерации страниц эффективен для большого количества данных? - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть таблица, которая содержит более 200000 данных.Я хочу нумерацию страниц, которая будет работать быстрее со всеми этими данными.Я должен был использовать таблицы данных для разбивки на страницы, но таблицы данных вряд ли справятся.Производительность будет намного ниже, если я буду использовать таблицы данных.Мой проект в ASP.NET MVC.

В настоящее время я использую этот метод.Он отлично работает, но становится трудно отслеживать сессию!Особенно, когда я обновляю что-либо с любой страницы, она теряет свою сессию и переходит на первую страницу!Я использовал TempData для этого, но опять же это становится сложным.Я хотел реализовать простую логику для управления этими данными для разбивки на страницы!

   <span class="page-info">
                Page @(SectionTypeList.PageCount < SectionTypeList.PageNumber ? 0 : SectionTypeList.PageNumber) of @SectionTypeList.PageCount
            </span>
            <span class="showing-info">
                Showing @SectionTypeList.FirstItemOnPage to @SectionTypeList.LastItemOnPage of @SectionTypeList.TotalItemCount Section
            </span>
            @Html.PagedListPager(SectionTypeList, page => Url.Action("GetSectionRecord", new { page, pageSize = SectionTypeList.PageSize, SearchBy = ViewBag.searchValue }))
        </div>

Этот метод работает просто отлично, за исключением обновления, сделанного на определенной странице!Потому что после обновления на 3-й странице (например) оно переходит на первую страницу.

 public ActionResult GetSectionRecord(int page = 1, int pageSize = 10, string SearchBy = "")
    {
        SectionModel objSectionModel = new SectionModel();
        DepartmentLookUpModel objDepartmentLookUp = new DepartmentLookUpModel();

        if (Session["strEmployeeId"] == null)
        {
            return RedirectToAction("LogOut", "Login");
        }
        else
        {
            LoadSession();

            TempData["PageNumberFromSearch"] = page;
            if (!string.IsNullOrEmpty(SearchBy))
            {
                ViewBag.searchValue = SearchBy;
                TempData["SearchValueFromSearchAction"] = SearchBy;
                objSectionModel.SearchBy = SearchBy;
                TempData.Keep("SearchValueFromSearchAction");
                TempData["SearchActionFlag"] = "1";
                TempData.Keep("SearchActionFlag");
            }
            if (string.IsNullOrEmpty(SearchBy))
            {
                if (Convert.ToInt32(TempData["SearchActionFlag"]) == 1)
                {
                    if (Convert.ToInt32(TempData["SearchActionFlag"]) == 1 && Convert.ToInt32(TempData["UpdateFlag"]) == 1)
                    {
                        page = Convert.ToInt32(TempData["UpdatePageNumber"]);
                        TempData.Keep("UpdatePageNumber");
                        objSectionModel.SearchBy = TempData["SearchValueFromSearchAction"].ToString();
                        TempData.Keep("SearchValueFromSearchAction");

                    }
                    else
                    {
                        page = Convert.ToInt32(TempData["PageNumberFromSearch"]);
                        TempData.Keep("PageNumberFromSearch");
                        objSectionModel.SearchBy = TempData["SearchValueFromSearchAction"].ToString();
                        TempData.Keep("SearchValueFromSearchAction");
                    }

                    TempData.Keep("SearchActionFlag");
                }

                else if (Convert.ToInt32(TempData["EditActionFlag"]) == 1 && Convert.ToInt32(TempData["UpdateFlag"]) == 1)
                {
                    page = Convert.ToInt32(TempData["UpdatePageNumber"]);
                    TempData.Keep("UpdatePageNumber");

                }
                else
                {

                    if (Convert.ToInt32(TempData["SearchActionFlag"]) == 1)
                    {
                        objSectionModel.SearchBy = TempData["SearchValueFromSearchAction"].ToString();
                        TempData.Keep("SearchValueFromSearchAction");
                    }
                    else
                    {
                        objSectionModel.SearchBy = SearchBy;
                    }
                }

            }
            objSectionModel.UpdateBy = strEmployeeId;
            objSectionModel.HeadOfficeId = strHeadOfficeId;
            objSectionModel.BranchOfficeId = strBranchOfficeId;

            objDepartmentLookUp.UpdateBy = strEmployeeId;
            objDepartmentLookUp.HeadOfficeId = strHeadOfficeId;
            objDepartmentLookUp.BranchOfficeId = strBranchOfficeId;

            DataTable dt = objLookUpDAL.GetSectionRecord(objSectionModel);
            if (dt.Rows.Count <= 2)
            {
                page = 1;
            }
            var SectionTypeList = SectionTypeListData(dt);
            ViewBag.SectionTypeList = SectionTypeList.ToPagedList(page, pageSize);
            ViewBag.DepartmentDDList = UtilityClass.GetSelectListByDataTable(objLookUpDAL.GetDepartmendDDList(), "DEPARTMENT_ID", "DEPARTMENT_NAME");

            TempData["GetActionFlag"] = 1;
            return View(objSectionModel);
        }            
    }

Не могли бы вы, ребята, подсказать, какой метод разбивки на страницы будет быстрее для большого объема данных?

...