Heim  >  Artikel  >  Datenbank  >  Beispielerklärung für eine MySQL-Paging-Abfrage

Beispielerklärung für eine MySQL-Paging-Abfrage

小云云
小云云Original
2018-01-30 17:22:441708Durchsuche

Die LIMIT-Klausel kann verwendet werden, um eine SELECT-Anweisung zu zwingen, 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 (nicht 1). Im Folgenden fassen wir MySQL-Paging-Abfragen für Sonderfälle zusammen.

MySQL bietet eine Paging-Funktion:

SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset

Die einfachste Verwendung ist:

select * from table limit ?,?

Dies ist die einfachste Limit-Paging-Abfrage. Mit Where-Bedingungen verwenden:

select * from table where column > ? order by id limit ?,?

In der oben genannten Situation wird empfohlen, einen zusammengesetzten Index für Spalte und ID zu erstellen.
In den beiden oben genannten Fällen reicht ein solches SQL für Paging-Abfragen mit kleinen Datenmengen aus. Wenn Sie jedoch für Datentabellen mit Millionen von Ebenen oder mehr das obige SQL verwenden, wird der Offset der Limit-Anweisung immer größer und die Abfrage wird immer langsamer. Ähnlich wie:

select * from `user` where `cate`='陕西' order by id limit 100000,10

Um diese Art von Abfrage zu vermeiden, können wir die Abfrageeffizienz durch Unterabfrage verbessern.

select * from `user` where id >=(select * from `user` where `cate`='陕西' order by id limit 100000,1) and `cate`='陕西' limit 10

Durch Erklären können wir den Unterschied zwischen direkter Limit-Abfrage und Unterabfrage erkennen:

Direkte Limit-Abfrage:
type possible_keys key key_len ref rows Extra
ALL (NULL) (NULL) (NULL) (NULL) 4076607
Unterabfrage-Paging-Abfrage:
type possible_keys key key_len ref rows Extra
PRIMARY range PRIMARY PRIMARY 4 2038331 Using where
SUBQUERY index (NULL) PRIMARY 4 4076663 Using index

Es ist ersichtlich, dass durch Unterabfrage die Unterabfrage für den Index ausgeführt wird, während die normale Abfrage für die Datendatei ausgeführt wird. Im Allgemeinen sind Indexdateien viel kleiner als Datendateien, sodass die Bedienung von Indexdateien direkter und effizienter ist.

Darüber hinaus können Sie auch die Methode Join-Paging verwenden.

SELECT * FROM `user` AS t1 
JOIN (SELECT id FROM `user` ORDER BY id LIMIT 100000, 1) AS t2 
WHERE t1.id <= t2.id ORDER BY t1.id LIMIT 10;

Die Effizienz von Join-Paging und Unterabfrage-Paging liegt grundsätzlich auf dem gleichen Niveau. (Unterabfragen müssen jedoch temporäre Tabellen im Speicher erstellen. Nach Abschluss der Abfrage muss MySQL diese temporären Tabellen löschen. Diese Situation kann durch Beitritt vermieden werden.) Bevor Sie die Abfrage auslagern, können Sie eine Beurteilung vornehmen Begrenzte Anzahl von Seiten, verwenden Sie einfach die einfache Paging-Abfrage und verwenden Sie die Paging-Verarbeitung mit Unterabfragen, wenn sie größer als 1 ist.

Verwandte Empfehlungen:

Untersuchung der MySQL-Paging-Leistung

MySQL-Paging-Optimierungstestfall

Leitfaden zur Optimierung der MySQL-Paging-Leistung

Das obige ist der detaillierte Inhalt vonBeispielerklärung für eine MySQL-Paging-Abfrage. 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