Co to jest paginacja?

Paginacja to proces dzielenia dużych danych na mniejsze zestawy danych na oddzielnych stronach. Jest szeroko stosowany w aplikacjach internetowych.

Jak działa paginacja w MS SQL Server?

W MS SQL Servermożemy osiągnąć funkcjonalność paginacji za pomocą OFFSET oraz FETCH klauzule z ORDER BY in SELECT oświadczenie.

  • OFFSET: Reprezentuje liczbę wierszy, które mają zostać pominięte w zestawie wyników. Powinien wynosić 0 lub więcej niż 0.
  • FETCH:Reprezentuje liczbę wierszy do wyświetlenia w wyniku.

Ważne punkty do rozważenia podczas używania OFFSET oraz FETCH:

  • ORDER BY jest obowiązkowe do użycia OFFSET FETCH Klauzula.
  • OFFSET jest obowiązkowe i FETCH jest opcjonalne.
  • TOP klauzula nie może być użyta w SELECT zeznanie z OFFSET FETCH.

Zobaczmy przykłady:

W poniższym przykładzie OFFSET 0 oraz FETCH NEXT 5 ROWS nie pomijaj żadnych wierszy i zwracaj kolejne 5 wierszy w zestawie danych, które są pierwszymi wierszami w zestawie danych.

SELECT EmployeeKey,FirstName,LastName,Title,EmailAddress,
Phone,EmergencyContactName,DepartmentName
FROM dbo.DimEmployee WITH(NOLOCK)
ORDER BY EmployeeKey 
OFFSET 0 ROWS
FETCH NEXT 5 ROWS ONLY

PRZESUNIĘCIE 0 i POBIERZ NASTĘPNE 5 WIERSZY

W poniższym przykładzie OFFSET 3 oraz FETCH NEXT 5 ROWS oznacza pominięcie pierwszych 3 wierszy i zwrócenie kolejnych 5 wierszy w zestawie danych.

SELECT EmployeeKey,FirstName,LastName,Title,EmailAddress,
Phone,EmergencyContactName,DepartmentName
FROM dbo.DimEmployee WITH(NOLOCK)
ORDER BY EmployeeKey 
OFFSET 3 ROWS
FETCH NEXT 5 ROWS ONLY

PRZESUNIĘCIE 3 i POBIERZ NASTĘPNE 5 WIERSZYPageNumberRowsOfPage

  • PageNumber — Reprezentuje numer strony
  • RowsOfPage — Reprezentuje liczbę wierszy na stronie

Teraz, aby obliczyć liczbę wierszy, które należy pominąć, gdy przejdziemy do następnej strony formuły(@PageNumber-1) * @RowsOfPage jest używany w OFFSETa liczba wierszy zostanie zwrócona za FETCH.

Tutaj, PageNumber to 2 i RowsOfPage wynosi 5, co oznacza zwrócenie zestawu danych dla strony nr 2.

DECLARE @PageNumber AS INT
       ,@RowsOfPage AS INT

SET @PageNumber=2
SET @RowsOfPage=5

SELECT EmployeeKey,FirstName,LastName,Title,EmailAddress,
Phone,EmergencyContactName,DepartmentName
FROM dbo.DimEmployee WITH(NOLOCK)
ORDER BY EmployeeKey
OFFSET (@PageNumber-1) * @RowsOfPage ROWS
FETCH NEXT @RowsOfPage ROWS ONLY

OFFSET (@PageNumber-1) * @ RowsofPage i FETCH NEXT @RowsOfPage ROWS

Wniosek

W aplikacji czasu rzeczywistego ta kompletna logika może być zapisana w procedurze składowanej, która jest wywoływana po kliknięciu przycisku „Dalej” lub przycisku numeru strony w aplikacji internetowej w celu wyświetlenia zestawu rekordów na stronie.

Wszystkie sposoby na stronicowanie w MS SQL Server przy użyciu OFFSET i FETCH [Simple] metody, o których wspomniałem, działały dobrze. Dziękujemy za przeczytanie i prosimy o komentarz poniżej swoimi przemyśleniami na temat tego artykułu i udostępnienie signalfix.net z Twoimi przyjaciółmi.