Serverseitiges Paging im SQL Server 2012

14. März 2012

Eine öfters vermisste Funktion im SQL Server ist das Paging. Die Möglichkeit die Anzahl der gelieferten Datensätze einzuschränken, wenn nur ein Teilbereich der Daten auf einer Seite dargestellt werden soll.

Mit der neuen Version SQL Server 2012 hat Microsoft diesen Wunsch endlich erhört und erweitert ORDER BY um die neuen Befehle OFFSET und FETCH.

OFFSET gibt den Startpunkt der Abfrage an und FETCH die Anzahl der der Datensätze. Beide Befehle können nur in Kombination mit ORDER BY verwendet werden.

Hier ein kleines Beispiel:

SELECT [FirstName], [LastName]
FROM [Person].[Contact]
ORDER BY [LastName]
OFFSET 100 ROWS -- Überspringe die ersten 100 Datensätze
FETCH NEXT 50 ROWS ONLY; -- Liefere 50 Datensätze

Somit ist es nun auch mit dem SQL Server möglich einfach und ressourcenschonend ein Paging umzusetzen.

Mehr Informationen und Beispiele in der MSDN:

http://msdn.microsoft.com/en-us/library/ms188385%28v=SQL.110%29.aspx#Offset