2016. február 15., hétfő

Lapozás SQL-ben

Többféle modell létezik a lapozott adatok megjelenítéséhez:

  1. Egyszerű lekérdezése lapozás nélkül, majd pedig a megjelenítő alkalmazás feladat megoldani, hogy lapozhatóan legyen a megjelenítés
  2. Lapozott lekérdezés a ROW_NUMBER használatával
  3. Lapozott lekérdezés az OFFSET és FETCH NEXT használatával 
Mindkét esetben, amikor már eleve lapozva olvastatjuk fel az adatokat, érezhető a javulás. Célszerű az OFFSET és FETCH NEXT módszert alkalmazni nagy adatmennyiségnél az SQL SERVER 2012+ verziókban. Bővebb leírás és sebességteszt itt található.




Példakódok a lapozáshoz:  

"ROW_NUMBER" használata:

DECLARE @PageNumber AS INT, @RowspPage AS INTSET @PageNumber = 2SET @RowspPage = 10 

SELECT * FROM (             SELECT ROW_NUMBER() OVER(ORDER BY ID_EXAMPLE) AS Numero,                    ID_EXAMPLE, NM_EXAMPLE , DT_CREATE FROM TB_EXAMPLE               ) AS TBLWHERE Numero BETWEEN ((@PageNumber - 1) * @RowspPage + 1) AND (@PageNumber * @RowspPage)ORDER BY ID_EXAMPLE
GO


"OFFSET" és "FETCH NEXT" használata (SQL SERVER 2012):

DECLARE @PageNumber AS INT, @RowspPage AS INTSET @PageNumber = 2SET @RowspPage = 10

SELECT ID_EXAMPLE, NM_EXAMPLE, DT_CREATEFROM TB_EXAMPLEORDER BY ID_EXAMPLEOFFSET ((@PageNumber - 1) * @RowspPage) ROWSFETCH NEXT @RowspPage ROWS ONLY
GO

Nincsenek megjegyzések:

Megjegyzés küldése