Hva er paginering?

Paginering er prosessen med å dele store data inn i mindre datasett på diskrete sider. Det er mye brukt i webapplikasjoner.

Hvordan fungerer paginering i MS SQL Server?

I MS SQL Serverkan vi oppnå pagineringsfunksjonaliteten ved å bruke OFFSET og FETCH klausuler med ORDER BY in SELECT tament.

  • OFFSET: Representerer antall rader som skal hoppes over fra resultatsettet. Den skal være 0 eller større enn 0.
  • FETCH: Representerer antall rader som skal vises i resultatet.

Viktige punkter å vurdere når du bruker OFFSET og FETCH:

  • BESTILLING AV er obligatorisk for bruken OFFSET FETCH Klausul.
  • OFFSET er obligatorisk og FETCH er valgfritt.
  • TOP klausul kan ikke brukes i SELECT tament med OFFSET FETCH.

La oss se eksempler:

I eksemplet nedenfor, OFFSET 0 og FETCH NEXT 5 ROWS kip ingen rader og returner de neste 5 radene i datasettet, de første 5 radene i datasettet.

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 og HENT NESTE 5 RADER

I eksemplet nedenfor, OFFSET 3 og FETCH NEXT 5 ROWS betyr hopp over de første 3 radene og returner de neste 5 radene i datasettet.

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 og HENT NESTE 5 RADERPageNumberRowsOfPage

  • PageNumber — Representerer sidetallet
  • RowsOfPage — Representerer antall rader på en side

Nå, for å beregne antall rader som skal hoppes over når vi går til neste sideformel(@PageNumber-1) * @RowsOfPage blir brukt i OFFSETog antall rader vil bli returnert FETCH.

Her, PageNumber er 2 og RowsOfPage er 5, som betyr å returnere datasettet for side 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 og FETCH NEXT @RowsOfPage ROWS

Konklusjon

I sanntidsapplikasjonen kan denne fullstendige logikken skrives i den lagrede prosedyren som kalles ved å klikke på «Neste» eller sidetall-knappen i nettapplikasjonen for å vise settet med poster på siden.

Alt av hvordan paginere i MS SQL Server ved å bruke OFFSET og FETCH [Simple] Metodene jeg nevnte fungerte bra. Takk for at du leste og kommenter nedenfor med dine tanker om denne artikkelen og del signalfix.net med vennene dine.