Heim > Datenbank > MySQL-Tutorial > Wie kann ich Ergebnisse in SQL Server unter Berücksichtigung der Leistung und des Gesamtabrufs effizient paginieren?

Wie kann ich Ergebnisse in SQL Server unter Berücksichtigung der Leistung und des Gesamtabrufs effizient paginieren?

Mary-Kate Olsen
Freigeben: 2025-01-22 00:56:13
Original
852 Leute haben es durchsucht

How Can I Efficiently Paginate Results in SQL Server, Considering Performance and Total Count Retrieval?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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:

  • ORDER BY ist erforderlich, wenn OFFSET und FETCH verwendet werden.
  • OFFSET muss mit FETCH verwendet werden.
  • Im selben Abfrageausdruck kann TOP nicht in Kombination mit OFFSET und FETCH verwendet werden.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage