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

js, um einen einfachen Front-End-Paging-Effekt zu erzielen

Einige Projekte haben ein relativ einfaches Gesch...

Beispielanalyse der MySQL-Datumsverarbeitungsfunktion

Dieser Artikel stellt hauptsächlich die Beispiela...

Vue implementiert eine Zeit-Countdown-Funktion

In diesem Artikelbeispiel wird der spezifische Co...

Ubuntu 20.04 – Bestes Konfigurationshandbuch (unverzichtbar für Anfänger)

1. Systemkonfiguration 1. Deaktivieren Sie das Su...

Detaillierte Erläuterung der Methode zum Vergleichen von Daten in MySQL

Wenn es eine Tabelle mit einem Feld „add_time“ gi...

JavaScript-Webformularfunktion Kommunikation voller praktischer Informationen

1. Einleitung Vorher haben wir über das Front-End...

Was tun, wenn Sie Ihr Linux/Mac MySQL-Passwort vergessen?

Was tun, wenn Sie Ihr Linux/Mac MySQL-Passwort ve...

js implementiert ein einfaches Warenkorbmodul

In diesem Artikelbeispiel wird der spezifische Co...