Vad är paginering?

Paginering är processen att dela upp stora data i mindre datamängder på diskreta sidor. Det används ofta i webbapplikationer.

Hur fungerar paginering i MS SQL Server?

I MS SQL Serverkan vi uppnå sidnumreringsfunktionen genom att använda OFFSET och FETCH klausuler med ORDER BY in SELECT tament.

  • OFFSET: Representerar antalet rader som ska hoppas över från resultatuppsättningen. Det bör vara 0 eller större än 0.
  • FETCH:Representerar antalet rader som ska visas i resultatet.

Viktiga punkter att tänka på när du använder OFFSET och FETCH:

  • BESTÄLLNING AV är obligatoriskt för användning OFFSET FETCH Klausul.
  • OFFSET är obligatoriskt och FETCH är valfritt.
  • TOP klausul kan inte användas i SELECT tament med OFFSET FETCH.

Låt oss se exempel:

I exemplet nedan, OFFSET 0 och FETCH NEXT 5 ROWS kip inga rader och returnera de nästa 5 raderna i datamängden, vilka första 5 raderna i datasetet.

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 och HÄMTA NÄSTA 5 RADER

I exemplet nedan, OFFSET 3 och FETCH NEXT 5 ROWS menar att hoppa över de första 3 raderna och returnera de nästa 5 raderna i datamängden.

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 och HÄMTA NÄSTA 5 RADERPageNumberRowsOfPage

  • PageNumber — Representerar sidnumret
  • RowsOfPage — Representerar antalet rader på en sida

Nu, för att beräkna antalet rader som ska hoppas över när vi går till nästa sidformel(@PageNumber-1) * @RowsOfPage används i OFFSEToch antalet rader kommer att returneras in FETCH.

Här, PageNumber är 2 och RowsOfPage är 5, vilket betyder att returnera datamängden för sida nummer 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 och FETCH NEXT @RowsOfPage ROWS

Slutsats

I realtidsapplikationen kan denna fullständiga logik skrivas i den lagrade proceduren som anropas när du klickar på ”Nästa” eller sidnummerknappen i webbapplikationen för att visa uppsättningen av poster på sidan.

Allt om hur man paginerar i MS SQL Server med OFFSET och FETCH [Simple] metoderna jag nämnde fungerade bra. Tack för att du läser och kommentera nedan med dina tankar om den här artikeln och dela signalfix.net med dina vänner.