Mikä on sivutus?

Sivutus on prosessi, jossa suuret tiedot jaetaan pienempiin tietojoukkoihin erillisillä sivuilla. Sitä käytetään laajasti verkkosovelluksissa.

Kuinka sivutus toimii MS SQL Serverissä?

Sisään MS SQL Servervoimme saavuttaa sivutustoiminnon käyttämällä OFFSET ja FETCH lausekkeet, joissa on ORDER BY in SELECT sanonta.

  • OFFSET: Edustaa tulosjoukosta ohitettavien rivien määrää. Sen tulee olla 0 tai suurempi kuin 0.
  • FETCH:Edoittaa tuloksessa näytettävien rivien määrää.

Tärkeitä huomioita käyttäessäsi OFFSET ja FETCH:

  • ORDER BY on käytön pakollinen OFFSET FETCH Lauseke.
  • OFFSET on pakollinen ja FETCH on valinnainen.
  • TOP lauseketta ei voi käyttää SELECT kanssa OFFSET FETCH.

Katsotaanpa esimerkkejä:

Alla olevassa esimerkissä OFFSET 0 ja FETCH NEXT 5 ROWS kip no rivejä ja palauttaa seuraavat 5 riviä tietojoukossa, jotka 5 ensimmäistä riviä tietojoukossa.

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

SIIRTO 0 ja HAE SEURAAVA 5 RIVIä

Alla olevassa esimerkissä OFFSET 3 ja FETCH NEXT 5 ROWS tarkoittaa ohittaa ensimmäiset 3 riviä ja palauttaa seuraavat 5 riviä tietojoukossa.

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

SIIRTO 3 ja HAE SEURAAVA 5 RIVIäPageNumberRowsOfPage

  • PageNumber — Edustaa sivunumeroa
  • RowsOfPage — Edustaa sivun rivien määrää

Nyt lasketaan ohitettavien rivien määrä, kun siirrytään seuraavan sivun kaavaan(@PageNumber-1) * @RowsOfPage on käytössä OFFSETja rivien määrä palautetaan FETCH.

Tässä, PageNumber on 2 ja RowsOfPage on 5, mikä tarkoittaa sivun 2 tietojoukon palauttamista.

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 ja HAE SEURAAVA @RowsOfPage ROWS

Johtopäätös

Reaaliaikaisessa sovelluksessa tämä täydellinen logiikka voidaan kirjoittaa tallennettuun toimintosarjaan, jota kutsutaan napsauttamalla ”Seuraava” tai sivunumeropainiketta verkkosovelluksessa, jolloin tietuesarja näytetään sivulla.

Kaikki sivutusohjeet MS SQL Serverissä OFFSETin ja FETCHin avulla [Simple] Mainitsemani menetelmät toimivat hyvin. Kiitos, että luit ja kommentoi alle ajatuksesi tästä artikkelista ja jaa signalfix.net kavereidesi kanssa.