Čo je stránkovanie?

Stránkovanie je proces rozdelenia veľkých údajov na menšie súbory údajov na samostatných stránkach. Je široko používaný vo webových aplikáciách.

Ako funguje stránkovanie na serveri MS SQL Server?

In MS SQL Servermôžeme dosiahnuť funkčnosť stránkovania pomocou OFFSET a FETCH doložky s ORDER BY v SELECT výrok.

  • OFFSET: Predstavuje počet riadkov, ktoré sa majú preskočiť z množiny výsledkov. Mala by byť 0 alebo väčšia ako 0.
  • FETCH:Reprezentuje počet riadkov, ktoré sa majú zobraziť vo výsledku.

Dôležité body, ktoré je potrebné zvážiť pri používaní OFFSET a FETCH:

  • OBJEDNÁVKA je povinná pre používanie OFFSET FETCH doložka.
  • OFFSET je povinná a FETCH je voliteľná.
  • TOP klauzulu nemožno použiť v SELECT príhovor s OFFSET FETCH.

Pozrime sa na príklady:

V nižšie uvedenom príklade OFFSET 0 a FETCH NEXT 5 ROWS vynechať žiadne riadky a vrátiť ďalších 5 riadkov v množine údajov, teda prvých 5 riadkov v množine údajov.

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

OFFSET 0 a FETCH NEXT 5 RIADKOV

V nižšie uvedenom príklade OFFSET 3 a FETCH NEXT 5 ROWS znamená preskočiť prvé 3 riadky a vrátiť ďalších 5 riadkov v množine údajov.

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

OFFSET 3 a NAČÍTANIE ĎALŠÍCH 5 RIADKOVPageNumberRowsOfPage

  • PageNumber — Predstavuje číslo strany
  • RowsOfPage — Predstavuje počet riadkov na stránke

Teraz, aby sme vypočítali počet riadkov, ktoré sa majú preskočiť, keď prejdeme na vzorec ďalšej strany(@PageNumber-1) * @RowsOfPage sa používa v OFFSETa vráti sa počet riadkov FETCH.

Tu, PageNumber je 2 a RowsOfPage je 5, čo znamená vrátiť množinu údajov pre stránku číslo 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 a FETCH NEXT @RowsOfPage ROWS

Záver

V aplikácii v reálnom čase možno túto úplnú logiku zapísať do uloženej procedúry, ktorá sa vyvolá kliknutím na tlačidlo „Ďalej“ alebo tlačidlo s číslom stránky vo webovej aplikácii, čím sa zobrazí sada záznamov na stránke.

Všetko o tom, ako stránkovať na serveri MS SQL pomocou OFFSET a FETCH [Simple] metódy, ktoré som uviedol, fungovali dobre. Ďakujeme, že ste si prečítali tento článok, komentujte nižšie svoj názor na tento článok a zdieľajte ho signalfix.net s tvojimi kamarátmi.