Detaillierte Erläuterung der MySQL-Limitnutzung und Leistungsanalyse von Paging-Abfrageanweisungen

Detaillierte Erläuterung der MySQL-Limitnutzung und Leistungsanalyse von Paging-Abfrageanweisungen

Beschränken Sie die Nutzung

Wenn wir Abfrageanweisungen verwenden, müssen wir häufig die ersten oder mittleren Datenzeilen zurückgeben. Was sollten wir jetzt tun? Keine Sorge, MySQL stellt uns bereits eine solche Funktion zur Verfügung.

SELECT * FROM Tabelle LIMIT [Offset,] Zeilen | Zeilen OFFSET Offset

Mit der LIMIT-Klausel können Sie eine SELECT-Anweisung zwingen, eine bestimmte Anzahl von Datensätzen zurückzugeben. LIMIT akzeptiert ein oder zwei numerische Argumente. Das Argument muss eine ganzzahlige Konstante sein. Wenn zwei Argumente angegeben werden, gibt das erste Argument偏移量der ersten zurückgegebenen Zeile und das zweite Argument die maximale Anzahl der zurückgegebenen Zeilen an.初始記錄行的偏移量是0(而不是1) : Aus Kompatibilitätsgründen mit PostgreSQL unterstützt MySQL auch die Syntax: LIMIT # OFFSET #.

mysql> SELECT * FROM table LIMIT 5,10; // Zeilen 6-15 abrufen

Um alle Zeilen ab einem bestimmten Offset bis zum Ende des Recordset abzurufen, können Sie den zweiten Parameter als -1 angeben:

mysql> SELECT * FROM table LIMIT 95,-1; // Rufe die letzten 96 Zeilen ab.

Wenn nur ein Argument angegeben wird, gibt es die maximale Anzahl der zurückzugebenden Zeilen an:

mysql> SELECT * FROM table LIMIT 5; // Rufe die ersten 5 Zeilen ab

Mit anderen Worten: LIMIT n ist gleichbedeutend mit LIMIT 0,n .

Leistungsanalyse von MySQL-Paging-Abfrageanweisungen

MySql-Paging-SQL-Anweisung: Vergleicht man sie mit der TOP-Syntax von MSSQL, ist die LIMIT-Syntax von MySQL viel eleganter. Es ist nur natürlich, es zum Paging zu verwenden.

Die grundlegendste Paging-Methode:

AUSWÄHLEN ... VON ... WO ... BESTELLEN NACH ... LIMIT ...

Bei kleinen und mittleren Datenmengen reicht ein solches SQL aus. Es muss lediglich darauf geachtet werden, dass der Index verwendet wird. Wenn das eigentliche SQL beispielsweise der folgenden Anweisung ähnelt, ist es besser, einen zusammengesetzten Index für die Spalten category_id und id zu erstellen:

Kopieren Sie den Code wie folgt:

SELECT * FROM Artikel WHERE Kategorie-ID = 123 ORDER BY ID LIMIT 50, 10

Paging-Methode für Unterabfragen:

Mit zunehmender Datenmenge erhöht sich auch die Anzahl der Seiten. Das SQL für die nächsten Seiten kann ungefähr wie folgt lauten:

Kopieren Sie den Code wie folgt:

SELECT * FROM Artikel WHERE Kategorie-ID = 123 ORDER BY ID LIMIT 10000, 10

Kurz gesagt: Je weiter Sie paginieren, LIMIT語句的偏移量就會越大,速度也會明顯變慢.

An diesem Punkt können wir die Paging-Effizienz durch die Verwendung von Unterabfragen wie folgt verbessern:

Wählen Sie * aus Artikeln, wobei id >= 
(SELECT id FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 1) LIMIT 10

JOIN-Paging-Methode

SELECT * FROM `content` AS t1 
JOIN (SELECT id FROM `content` ORDER BY id desc LIMIT ".($page-1)*$pagesize.", 1) AS t2 
WO t1.id <= t2.id ORDER BY t1.id desc LIMIT $pagesize;

Meinen Tests zufolge ist die Effizienz von Join-Paging und Subquery-Paging grundsätzlich gleich, und auch der Zeitaufwand ist grundsätzlich gleich. Erklären Sie die SQL-Anweisung:

id select_type Tabellentyp mögliche Schlüssel Schlüssellänge ref Zeilen Extra
1 PRIMÄRES <abgeleitetes2>-System NULL NULL NULL NULL 1 
1 PRIMARY t1 Bereich PRIMARY PRIMARY 4 NULL 6264 Verwenden von where
2 ABGELEHNT Inhaltsindex NULL PRIMARY 4 NULL 27085 Index wird verwendet

Warum passiert das? Da Unterabfragen auf Indizes ausgeführt werden, normale Abfragen jedoch auf Datendateien, sind Indexdateien im Allgemeinen viel kleiner als Datendateien, sodass Vorgänge effizienter sind.

Tatsächlich können Sie ein ähnliches Strategiemuster für die Seitenverwaltung verwenden. Wenn die Anzahl der Seiten beispielsweise weniger als 100 beträgt, verwenden Sie die einfachste Seitenverwaltungsmethode. Wenn die Anzahl der Seiten größer als 100 ist, verwenden Sie die Unterabfrage-Seitenverwaltungsmethode.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • 5 Möglichkeiten zur Optimierung von MySQL-Limitabfrageanweisungen
  • MySQL-Abfrageanweisung verwendet Limit, um die Anzahl der abgefragten Zeilen zu begrenzen
  • MySQL-Abfrageoptimierung: Einführung in das Sortierlimit für Join-Abfragen (Join-, Order-by- und Limit-Anweisung)
  • MySQL: die ersten paar Datensätze von Anweisungen (Limit)
  • MySQL-Optimierungsmethode für die Limit-Abfrageanweisung
  • Die Auswirkungen des Limits auf die Abfrageleistung in MySQL
  • Lassen Sie uns ausführlich über die LIMIT-Anweisung in MySQL sprechen

<<:  Detaillierte Erläuterung des vite2.0-Konfigurationslernens (Typescript-Version)

>>:  So richten Sie ein Bereitstellungsprojekt unter einem Linux-System ein

Artikel empfehlen

Vue realisiert den Produktlupeneffekt

In diesem Artikelbeispiel wird der spezifische Co...

Lösen Sie das Problem des Vergessens von Passwörtern in MySQL 5.7 unter Linux

1. Problem Passwort für mysql5.7 unter Linux verg...

So rufen Sie das unterbrochene System in Linux auf

Vorwort Langsame Systemaufrufe beziehen sich auf ...

CSS zum Erzielen eines Chat-Blaseneffekts

1. Rendern JD-Effekt Simulationseffekt 2. Grundsa...

Eine kurze Diskussion über den Vater-Sohn-Werttransfer in Vue3

Inhaltsverzeichnis Vom Vater zum Sohn: 1. Übergeb...

Detaillierter Beispielcode einer MySQL-Batch-Einfügeschleife

Hintergrund Als ich vor einigen Tagen Paging in M...

Docker-Image-Zugriff auf den lokalen Elasticsearch-Port-Vorgang

Wenn Sie den vom Docker-Stack bereitgestellten Im...

So vergessen Sie das Passwort von Jenkins in Linux

1. Jenkins-Installationsschritte: https://www.jb5...

Ladeanimation mit CSS3 implementiert

Ergebnisse erzielen Implementierungscode <h1&g...

Installieren Sie Zookeeper unter Docker (Standalone und Cluster).

Nachdem wir Docker gestartet haben, schauen wir u...

Die Fallstricke beim Erlernen von Vue.js

Inhaltsverzeichnis Klasse void zeigen ES6-Pfeilfu...