Stronicowanie w SQL Server 2012

Kolejną nowością dodaną do SQL Server 2012 jest wbudowane stronicowanie danych. Mechanizm ten przydaje się gdy pracujemy z dużą ilością danych i chcemy wyświetlić tylko określoną stronę danych.

Do stronicowania służą słowa kluczowe OFFSET i FETCH NEXT. Dzięki nim możemy określić zakres danych. Przykładowe użycie:

SELECT *
FROM [dbo].[Apartments]
ORDER BY Id
OFFSET 1 ROWS
FETCH NEXT 2 ROWS ONLY;

Działanie tego zapytania nie wymaga raczej tłumaczenia. A jeżeli tak, to wątpliwości powinna rozjaśnić poniższa grafika.

pagingSQL

W SQL Server 2008 podobną funkcjonalność można było uzyskać wykorzystując funkcje ROW_NUMBER:

SELECT *
FROM (
  SELECT ROW_NUMBER() OVER(ORDER BY Id) AS sequencenumber, *
  FROM [dbo].[Apartments]) AS TempTable
WHERE sequencenumber > 2 and sequencenumber <= 4

Ale jak widać nowsze rozwiązanie jest o wiele bardziej czytelne i szybsze.

Share Button

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Time limit is exhausted. Please reload the CAPTCHA.