Effizientes Paging: Leistung und vollständiger Abruf in SQL Server
In der Welt der Datenbankverwaltung ist effizientes Paging von entscheidender Bedeutung, um große Datenmengen zu verarbeiten und ein benutzerfreundliches Browsing-Erlebnis zu bieten. In diesem Artikel werden Best Practices für das Ergebnis-Paging in den Versionen Microsoft SQL Server 2000 bis 2012 unter Berücksichtigung der Leistung und der Gesamtzahl der abgerufenen Ergebnisse untersucht.
SQL Server 2000-2008: Zeilennummern und ANZAHL
Für frühere Versionen von SQL Server bestand ein gängiger Ansatz darin, die Funktion ROW_NUMBER() zu verwenden, um jeder Zeile in der Tabelle eine Seriennummer zuzuweisen. Mithilfe dieser Seriennummer können die Ergebnisse dann nach der gewünschten Seitenzahl und Seitengröße gefiltert werden. Um die Gesamtzahl abzurufen, können Sie die Funktion COUNT() als Unterabfrage verwenden.
Beispiel:
<code class="language-sql">-- 分页 SELECT * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNum, * FROM TableName ) AS PaginatedTable WHERE RowNum BETWEEN ((@Page - 1) * @PageSize + 1) AND (@Page * @PageSize) -- 总数 SELECT COUNT(*) AS TotalCount FROM TableName</code>
SQL Server 2012: OFFSET und FETCH
Mit der Einführung von SQL Server 2012 bieten die OFFSET- und FETCH-Klauseln eine direktere und effizientere Paging-Methode.
Beispiel:
<code class="language-sql">SELECT * FROM TableName ORDER BY id OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;</code>
Diese Abfrage überspringt die ersten 10 Zeilen (OFFSET 10 ROWS) und ruft die nächsten 10 Zeilen ab (NUR NÄCHSTE 10 REIHEN FETCH). Die ORDER BY-Klausel ist erforderlich, damit OFFSET und FETCH ordnungsgemäß funktionieren.
Hinweis:
Fazit
Die beste Möglichkeit, Ergebnisse in SQL Server zu paginieren, hängt von der jeweils verwendeten Version ab. Während die Methode ROW_NUMBER() bei älteren Versionen noch möglich ist, bieten OFFSET und FETCH in SQL Server 2012 und späteren Versionen eine effizientere und einfachere Lösung.
Das obige ist der detaillierte Inhalt vonWie kann ich Ergebnisse in SQL Server unter Berücksichtigung der Leistung und des Gesamtabrufs effizient paginieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!