Mehrere Implementierungsmethoden sowie Vor- und Nachteile der SQL-Paging-Abfrage in MySQL

Mehrere Implementierungsmethoden sowie Vor- und Nachteile der SQL-Paging-Abfrage in MySQL

【SQL】 Zusammenfassung der SQL-Paging-Abfragen

Während des Entwicklungsprozesses tritt häufig die Notwendigkeit einer Paginierung auf. Lassen Sie uns dies heute hier zusammenfassen.

Vereinfacht ausgedrückt gibt es zwei Methoden: Eine besteht in der Kontrolle an der Quelle, die andere in der Kontrolle am Ende. Die Quellcodeverwaltung platziert die Paging-Logik in der SQL-Ebene; die Clientsteuerung ruft alle Daten auf einmal ab und platziert die Paging-Logik in der Benutzeroberfläche (z. B. GridView). Offensichtlich ist die On-End-Steuerung weniger schwierig zu entwickeln und eignet sich für kleine Datenmengen, aber Leistung und IO-Verbrauch werden bei steigendem Datenvolumen inakzeptabel. Die On-Source-Steuerung ist in Bezug auf Leistung und Entwicklungsschwierigkeiten ausgewogener und für die meisten Geschäftsszenarien geeignet. Darüber hinaus kann je nach objektiven Bedingungen (Leistungsanforderungen, Ressourcennutzung der Quelle und des Endes usw.) eine Schicht zwischen der Quelle und dem Ende hinzugefügt werden, und für die Verarbeitung können spezielle Algorithmen und Technologien verwendet werden. Im Folgenden wird hauptsächlich die Paging-Funktion auf der Quelle, also SQL, besprochen.

Das Problem beim Paging besteht eigentlich darin, aus einem Stapel geordneter Daten, die die Bedingungen erfüllen, den Teil abzufangen, der aktuell angezeigt werden muss. Tatsächlich verfügen verschiedene Datenbanken über integrierte Strategien für Paging-Probleme, wie etwa LIMIT in MySql, ROWNUM und ROW_NUMBER() in Oracle und TOP und ROW_NUMBER() in SqlServer. Darauf basierend können wir eine Reihe von Paging-Methoden erhalten.

1. Basierend auf MySQLs LIMIT und Oracles ROWNUM können Sie den Rückgabebereich direkt begrenzen (nehmen Sie MySQL als Beispiel. Beachten Sie, dass bei Verwendung von Oracles ROWNUM eine Unterabfrage angewendet werden sollte):

Methode 1: Rückgabebereich direkt begrenzen

SELECT * FROM Tabelle WHERE Abfragebedingung ORDER BY Sortierbedingung LIMIT ((Seitenzahl - 1) * Seitengröße), Seitengröße;

Vorteile: Einfaches Schreiben.
Nachteile: Wenn die Seitenzahl und die Seitengröße zu groß sind, nimmt die Leistung erheblich ab.
Zutreffend: Die Datenmenge ist nicht groß.

2. Basierend auf LIMIT (MySql), ROWNUM (Oracle) und TOP (SqlServer) können sie die Anzahl der zurückgegebenen Zeilen begrenzen, sodass wir die folgenden beiden Sätze allgemeiner Methoden erhalten (am Beispiel von SqlServer):

Methode 2: NICHT IN

SELECT TOP Seitengröße * FROM Tabelle WHERE Primärschlüssel NOT IN
(
 SELECT TOP (Seitenzahl - 1) * Seitengröße Primärschlüssel FROM Tabelle WHERE Abfragebedingung ORDER BY Sortierbedingung)
ORDER BY Sortierbedingung

Vorteile: Große Vielseitigkeit.
Nachteile: Bei einer großen Datenmenge wird die Seite rückwärts gedreht und zu viele Daten in NOT IN beeinträchtigen die Leistung.
Zutreffend: Die Datenmenge ist nicht groß.

Methode 3: MAX

SELECT TOP Seitengröße * FROM Tabelle WHERE Abfragebedingung AND ID >
(
 Wählen Sie ISNULL (MAX (id), 0) aus 
 (
  SELECT TOP ((Seitenzahl - 1) * Seitengröße) id FROM Tabelle WHERE Abfragebedingung ORDER BY id 
 ) AS tempTable
) 
ORDER BY-ID

Vorteile: Schnell, insbesondere wenn die ID der Primärschlüssel ist.
Nachteile: eingeschränkte Anwendbarkeit, erfordert einheitliche und vergleichbare Sortierbedingungen.
Anwendbar: Einfache Sortierung (in Sonderfällen kann auch versucht werden, die Werte in ähnliche Vergleichswerte umzuwandeln und zu verarbeiten).

3. Basierend auf ROW_NUMBER () von SqlServer und Oracle kann die Zeilennummer der zurückgegebenen Daten ermittelt werden. Basierend darauf wird die folgende Methode erhalten, indem der Rückgabebereich eingeschränkt wird (am Beispiel von SqlServer):

Methode 4: ROW_NUMBER()

SELECT TOP Seitengröße * FROM 
(
 SELECT TOP (Seitenzahl * Seitengröße) ROW_NUMBER() OVER (ORDER BY Sortierbedingung) AS RowNum, * FROM Tabelle WHERE Abfragebedingung) AS tempTable
WHERE RowNum BETWEEN (Seitenzahl - 1) * Seitengröße + 1 AND Seitenzahl * Seitengröße ORDER BY RowNum

Vorteile: Es bietet Vorteile gegenüber NOT IN, wenn die Datenmenge groß ist.
Nachteil: Bei geringen Datenmengen nicht so gut wie NOT IN.
Gilt für: die meisten Anforderungen an Paging-Abfragen.

Das Obige ist meine bescheidene Meinung. Der Leistungsvergleich basiert auf Online-Informationen und persönlichen Einschätzungen. Es gibt keine ausführlichen Experimente. Bitte korrigieren Sie mich, wenn es unangemessene Punkte gibt.

Dies ist das Ende dieses Artikels über verschiedene Implementierungsmethoden und Vor- und Nachteile der Paging-Abfrage in MySQL. Weitere Informationen zu Paging-Abfragemethoden in MySQL finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird.

Das könnte Sie auch interessieren:
  • Tutorial zur MySQL-Optimierung: Große Paging-Abfrage
  • MySQL-Paging-Abfragemethode für Millionen von Datenmengen und ihre Optimierungsvorschläge
  • MySQL-Lösung zur Datenpaging-Abfrageoptimierung auf Millionenebene
  • Optimierung der Leistung von Paging-Abfragen für MySQL mit mehreren zehn Millionen Daten
  • Detaillierte Erläuterung der Mysql Limit Paging-Abfrageoptimierung
  • Beispiel einer Base64-Verarbeitungsmethode für MySQL-Ergebnisse einer PHP-Paging-Abfrage
  • Detaillierte Erläuterung der MySQL-Limitnutzung und Leistungsanalyse von Paging-Abfrageanweisungen
  • Techniken zur Optimierung von MySQL-Paging-Abfragen

<<:  JavaScript implementiert die umfassendste Codeanalyse einer einfachen Lupe (ES5)

>>:  Detaillierte Erläuterung des Prozesses zum Bereitstellen von MySql auf dem Centos-Server und zum Herstellen einer Verbindung mit Navicat

Artikel empfehlen

Vue implementiert ein Suchfeld mit einer Lupe

In diesem Artikel erfahren Sie, wie Sie mit Vue e...

Spezifische Verwendung des Node.js-Paketmanagers npm

Inhaltsverzeichnis Zweck npm init und package.jso...

vue verwendet Ele.me UI, um die Filterfunktion von Teambition zu imitieren

Inhaltsverzeichnis Problembeschreibung Die allgem...

So installieren Sie Windows Server 2008 R2 auf einem Dell R720-Server

Hinweis: Alle Bilder in diesem Artikel stammen au...

Detaillierte Erklärung der Ansichtszusammenfassungsdefinition im Angular-Framework

Vorwort Als Front-End-Framework, das „für große F...

Implementierung der Header-Informationen für Nginx-Operationsantworten

Voraussetzung: Sie müssen das Modul ngx_http_head...

8 Möglichkeiten zum manuellen und automatischen Sichern Ihrer MySQL-Datenbank

MySQL ist ein beliebtes Open-Source-Datenbankverw...

Realisierung der Echtzeit-Dateisynchronisierung zwischen Linux-Servern

Anwendungsszenarien Bei vorhandenen Servern A und...

CSS Clear Float Clear:Both Beispielcode

Heute werde ich mit Ihnen über das Löschen von Fl...

jQuery-Plugin zur Implementierung des Minesweeper-Spiels (1)

Dieser Artikel teilt den spezifischen Code des er...

HTML-Tutorial: Das Optgroup-Element verstehen

Wählen Sie die Kategorieauswahl. Nach Tests könne...

Einführung des Code-Prüftools stylelint zum Erfahrungsaustausch

Inhaltsverzeichnis Vorwort Text 1. Installieren S...