Hvad er sideinddeling?

Paginering er processen med at opdele store data i mindre datasæt på diskrete sider. Det er meget udbredt i webapplikationer.

Hvordan virker sideinddeling i MS SQL Server?

I MS SQL Serverkan vi opnå pagineringsfunktionaliteten ved at bruge OFFSET og FETCH klausuler med ORDER BY in SELECT erklæring.

  • OFFSET: Repræsenterer antallet af rækker, der skal springes over fra resultatsættet. Det skal være 0 eller større end 0.
  • FETCH: Repræsenterer antallet af rækker, der skal vises i resultatet.

Vigtige punkter at overveje under brug OFFSET og FETCH:

  • BESTIL BY er obligatorisk for brugen OFFSET FETCH Klausul.
  • OFFSET er obligatorisk og FETCH er valgfri.
  • TOP klausul kan ikke bruges i SELECT tatement med OFFSET FETCH.

Lad os se eksempler:

I nedenstående eksempel, OFFSET 0 og FETCH NEXT 5 ROWS kip ingen rækker og returner de næste 5 rækker i datasættet, hvilke første 5 rækker i datasættet.

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 FETCH NÆSTE 5 RÆKKER

I nedenstående eksempel, OFFSET 3 og FETCH NEXT 5 ROWS betyder spring de første 3 rækker og returner de næste 5 rækker i datasættet.

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 FETCH NÆSTE 5 RÆKKERPageNumberRowsOfPage

  • PageNumber — Repræsenterer sidetallet
  • RowsOfPage — Repræsenterer antallet af rækker på en side

Nu for at beregne antallet af rækker, der skal springes over, når vi går til næste sideformel(@PageNumber-1) * @RowsOfPage bliver brugt i OFFSETog antallet af rækker vil blive returneret i FETCH.

Her, PageNumber er 2 og RowsOfPage er 5, hvilket betyder at returnere datasættet 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

Konklusion

I realtidsapplikationen kan denne komplette logik skrives i den lagrede procedure, som kaldes ved at klikke på “Næste” eller sidetalsknappen i webapplikationen for at få vist sættet af poster på siden.

Alt om, hvordan man paginerer i MS SQL Server ved hjælp af OFFSET og FETCH [Simple] de metoder, jeg nævnte, fungerede fint. Tak fordi du læste og kommenter venligst nedenfor med dine tanker om denne artikel og del signalfix.net med dine venner.