Heim  >  Artikel  >  Datenbank  >  Ausführliche Erläuterung der MySQL-Limit-Nutzung und Leistungsanalyse von Paging-Abfrageanweisungen

Ausführliche Erläuterung der MySQL-Limit-Nutzung und Leistungsanalyse von Paging-Abfrageanweisungen

黄舟
黄舟Original
2017-03-29 13:24:271107Durchsuche

Dieser Artikel stellt hauptsächlich die detaillierte Verwendung des Limits von MySQL und die Leistungsanalyse der Paging--Abfrage--Anweisung vor, die bestimmte Funktionen hat Referenzwert, interessierte Freunde können darauf verweisen.

Nutzung einschränken

Wenn wir Abfrageanweisungen verwenden, müssen wir häufig die ersten Datenzeilen oder die mittleren Datenzeilen zurückgeben zu diesem Zeitpunkt tun? 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. Das Argument muss eine GanzzahlKonstante sein. Wenn zwei Parameter angegeben werden, gibt der erste Parameter das erste 偏移量 an, das die Datensatzzeile zurückgibt, und der zweite Parameter gibt die maximale Anzahl der zurückzugebenden Datensatzzeilen an. 初始记录行的偏移量是 0(而不是 1): Aus Kompatibilitätsgründen mit PostgreSQL unterstützt MySQL auch die Syntax: LIMIT # OFFSET #.

mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15

Um alle Zeilen von einem Offset bis zum Ende des Recordsets abzurufen, können Sie -1 als zweiten Parameter angeben:

mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.

Wenn nur Ein Parameter, der das Maximum darstellt Anzahl der zurückgegebenen Datensatzzeilen:

mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行

Mit anderen Worten: LIMIT n entspricht LIMIT 0,n.

Leistungsanalyse der MySQL-Paging-Abfrageanweisung

MySql-Paging-SQL-Anweisung im Vergleich mit der TOP-Syntax von MSSQL und dann mit der LIMIT-Syntax von MySQL ist viel eleganter. Es ist natürlich, es für die Paginierung zu verwenden.

Die grundlegendste Paging-Methode:

SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT ...

Bei kleinen und mittleren Datenmengen reicht ein solches SQL aus. Das einzige Problem, das beachtet werden muss Stellen Sie sicher, dass es verwendet wird Index: Wenn die eigentliche SQL beispielsweise der folgenden Anweisung ähnelt, ist es besser, einen zusammengesetzten Index für die Spalten „category_id“ und „id“ einzurichten:

The Der Code lautet wie folgt:

SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 50, 10

Paging-Methode der Unterabfrage:

Mit zunehmender Datenmenge nimmt die Anzahl der Seiten zu Einige Seiten können ähnlich sein:

Der Code lautet wie folgt:

SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 10

Kurz gesagt bedeutet es eine Paginierung weiter hinten, LIMIT语句的偏移量就会越大,速度也会明显变慢.

Zu diesem Zeitpunkt können wir die Paging-Effizienz durch Unterabfragen verbessern, ungefähr wie folgt:

SELECT * FROM articles WHERE 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 
WHERE t1.id <= t2.id ORDER BY t1.id desc LIMIT $pagesize;

Nach mir Laut Zum Testen ist die Effizienz von Join-Paging und Subquery-Paging im Wesentlichen auf dem gleichen Niveau und der Zeitaufwand ist im Wesentlichen gleich. SQL-Anweisung erklären:

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

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.

Sie können tatsächlich eine Methode ähnlich dem Strategiemodus verwenden, um das Paging zu handhaben. Wenn beispielsweise festgestellt wird, dass es innerhalb von hundert Seiten liegt, verwenden Sie die einfachste Paging-Methode größer als einhundert Seiten ist, dann Paginierung mit Unterabfrage .

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der MySQL-Limit-Nutzung und Leistungsanalyse von Paging-Abfrageanweisungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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