Optimierung der Paginierung in SQL Server für große Datensätze
Um Benutzern große Datensätze effizient präsentieren zu können, ist eine Paginierung erforderlich, bei der nur ein Teil der Ergebnisse pro Seite angezeigt wird. Allerdings ist die Implementierung der Paginierung ohne Beeinträchtigung der Leistung von entscheidender Bedeutung, insbesondere wenn im Voraus eine Gesamtergebniszählung erforderlich ist.
Ältere SQL Server-Versionen (2000-2008): Zeilennummerierung
Vor SQL Server 2012 war die Zeilennummerierung die Standard-Paginierungstechnik. Dazu gehörte die Zuweisung einer Zeilennummer mit ROW_NUMBER()
und die Filterung nach Seitengröße und -nummer. Dieser Ansatz war zwar funktionsfähig, erwies sich jedoch bei umfangreichen Datensätzen als ineffizient.
SQL Server 2012 und höher: OFFSET
und FETCH
SQL Server 2012 führte die übergeordneten Klauseln OFFSET
und FETCH
ein. Diese überspringen direkt eine angegebene Anzahl von Zeilen und rufen nur die erforderliche Teilmenge ab. Dies steigert die Leistung bei großen Datensätzen erheblich, da der Mehraufwand für die Zeilennummerierung entfällt.
Illustrative Abfrage
Die folgende Abfrage veranschaulicht das Abrufen der ersten 10 Zeilen und der Gesamtzeilenanzahl mit OFFSET
und FETCH
in SQL Server 2012 und höher:
<code class="language-sql">DECLARE @RowsPerPage INT = 10; WITH TotalResults AS ( SELECT COUNT(*) OVER() AS TotalRows FROM TableName ) SELECT * FROM TableName ORDER BY id OFFSET 0 ROWS FETCH NEXT @RowsPerPage ROWS ONLY; SELECT TotalRows FROM TotalResults;</code>
Wichtige Hinweise:
ORDER BY
-Klausel ist obligatorisch, wenn OFFSET
und FETCH
verwendet werden.OFFSET
muss FETCH
begleiten; Sie können nicht mit TOP
.OFFSET
und FETCH
steigert die Leistung erheblich, insbesondere bei umfangreichen Datensätzen.Das obige ist der detaillierte Inhalt vonWie kann ich große Datensätze in SQL Server effizient paginieren und gleichzeitig die Leistung beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!