1. Mysql-Nutzung einschränken
Wenn wir Abfrageanweisungen verwenden, müssen wir häufig die ersten paar oder einige mittlere Datenzeilen zurückgeben. Keine Sorge, MySQL stellt uns bereits eine solche Funktion zur Verfügung.
SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset
Mit der LIMIT-Klausel kann eine SELECT-Anweisung gezwungen werden, eine bestimmte Anzahl von Datensätzen zurückzugeben. LIMIT akzeptiert ein oder zwei numerische Argumente. Der Parameter muss eine ganzzahlige Konstante sein. Wenn zwei Parameter angegeben werden, gibt der erste Parameter den Offset der ersten zurückgegebenen Datensatzzeile an und der zweite Parameter gibt die maximale Anzahl zurückgegebener Datensatzzeilen an. Der Offset der ersten Datensatzzeile beträgt 0 (statt 1): Aus Kompatibilitätsgründen mit PostgreSQL unterstützt MySQL auch die Syntax: LIMIT # OFFSET #.
mysql> SELECT * FROM table LIMIT 5,10; // Datensatzzeilen 6-15 abrufen
//Um alle Datensatzzeilen ab einem bestimmten Offset bis zum Ende des Datensatzes abzurufen set, Sie können den zweiten Parameter als -1 angeben:
mysql> SELECT * FROM table LIMIT 95,-1; // Datensatzzeile 96-last abrufen Ein Parameter, der die maximale Anzahl der zurückgegebenen Datensatzzeilen angibt:
mysql> //Die ersten 5 Datensatzzeilen abrufen
// Ersetzen Mit anderen Worten, LIMIT n entspricht LIMIT 0,n.
[Zitat, Passant B: Detaillierte Erläuterung der Verwendung von Limit in MySQL]
2. Leistungsanalyse der MySQL-Paging-Abfrageanweisung
MySQL-Paging-SQL-Anweisung: Im Vergleich zur TOP-Syntax von MSSQL ist die LIMIT-Syntax von MySQL viel eleganter. Es ist natürlich, es für die Paginierung zu verwenden.
2.1 Die grundlegendste Paging-Methode:
SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT ...
Wenn die eigentliche SQL beispielsweise der folgenden Anweisung ähnelt, ist es besser, einen zusammengesetzten Index für die Kategorie_ID einzurichten. ID-Spalten:
SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 50, 10
Mit zunehmender Datenmenge nimmt die Anzahl der Seiten zu wird immer mehr, schauen Sie sich die nächsten paar Seiten an. Das SQL könnte ähnlich sein wie:
SQL-Code-Sammlungscode
Die Bewegung wird größer und die Geschwindigkeit deutlich langsamer sein. An diesem Punkt können wir die Paging-Effizienz durch Unterabfragen ungefähr wie folgt verbessern:SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 10
2.3 JOIN-Paging-Methode
Nach meinen Tests sind die Effizienz von Join-Paging und Subquery-Paging im Wesentlichen gleich, und der Zeitaufwand ist im Wesentlichen gleich.SELECT * FROM articles WHERE id >= (SELECT id FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 1) LIMIT 10
SQL-Anweisung erklären:
SELECT * FROM `content` AS t1 JOIN (SELECT id FROM `content` ORDER BY id desc LIMIT ".($page-1)*$pagesize.", 1) AS t2 WHERE t1.id <= t2.id ORDER BY t1.id desc LIMIT $pagesize;
Warum passiert das? Da die Unterabfrage für den Index und die normale Abfrage für die Datendatei abgeschlossen wird, ist die Indexdatei im Allgemeinen viel kleiner als die Datendatei, sodass der Vorgang effizienter ist.
id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY <derived2> system NULL NULL NULL NULL 1 1 PRIMARY t1 range PRIMARY PRIMARY 4 NULL 6264 Using where 2 DERIVED content index NULL PRIMARY 4 NULL 27085 Using index ----------------------------------------