Wat is paginering?

Paginering is het proces waarbij grote gegevens worden opgedeeld in kleinere gegevenssets op afzonderlijke pagina’s. Het wordt veel gebruikt in webapplicaties.

Hoe werkt paginering in MS SQL Server?

In MS SQL Serverwe kunnen de pagineringsfunctionaliteit bereiken door gebruik te maken van OFFSET en FETCH clausules met ORDER BY in SELECT verklaring.

  • OFFSET: Geeft het aantal rijen aan dat moet worden overgeslagen uit de resultatenset. Het moet 0 of groter dan 0 zijn.
  • FETCH:Vertegenwoordigt het aantal rijen dat in het resultaat moet worden weergegeven.

Belangrijke punten om te overwegen tijdens het gebruik OFFSET en FETCH:

  • ORDER BY is verplicht voor het gebruik OFFSET FETCH Clausule.
  • OFFSET is verplicht en FETCH is optioneel.
  • TOP clausule kan niet worden gebruikt in SELECT verklaring met OFFSET FETCH.

Laten we voorbeelden bekijken:

In het onderstaande voorbeeld, OFFSET 0 en FETCH NEXT 5 ROWS kip geen rijen en retourneert de volgende 5 rijen in de dataset, die eerste 5 rijen in de dataset.

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 en FETCH VOLGENDE 5 RIJEN

In het onderstaande voorbeeld, OFFSET 3 en FETCH NEXT 5 ROWS bedoel sla de eerste 3 rijen over en retourneer de volgende 5 rijen in de dataset.

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 en FETCH VOLGENDE 5 RIJENPageNumberRowsOfPage

  • PageNumber — Staat voor het paginanummer
  • RowsOfPage — Vertegenwoordigt het aantal rijen op een pagina

Nu, om het aantal rijen te berekenen dat moet worden overgeslagen wanneer we naar de volgende pagina gaan formule(@PageNumber-1) * @RowsOfPage wordt gebruikt in OFFSETen het aantal rijen wordt geretourneerd in FETCH.

Hier, PageNumber is 2 en RowsOfPage is 5, wat betekent dat de dataset voor paginanummer 2 moet worden geretourneerd.

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 en FETCH NEXT @RowsOfPage RIJEN

Conclusie

In de real-time applicatie kan deze volledige logica worden geschreven in de opgeslagen procedure die wordt aangeroepen door op de knop “Volgende” of paginanummer in de webapplicatie te klikken om de set records op de pagina weer te geven.

Alle paginering in MS SQL Server met behulp van OFFSET en FETCH [Simple] methoden die ik noemde werkten prima. Bedankt voor het lezen en reageer hieronder met uw mening over dit artikel en deel het signalfix.net met je vrienden.