Heim  >  Artikel  >  Datenbank  >  MySQL-Einschränkungen und mehrere Paging-Formulare

MySQL-Einschränkungen und mehrere Paging-Formulare

黄舟
黄舟Original
2017-02-06 15:36:071751Durchsuche

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 ...
Bei kleinen und mittleren Datenmengen ist dies SQL genug, das einzige Problem, das Aufmerksamkeit erfordert, besteht darin, sicherzustellen, dass ein Index verwendet wird:


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
2.2 Paginierungsmethode der Unterabfrage:


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
----------------------------------------
Tatsächlich können Sie eine Methode verwenden, die dem Strategiemodus ähnelt. Wenn dies beispielsweise der Fall ist, verwenden Sie die einfachste Paging-Methode Bei mehr als hundert Seiten verwenden Sie eine Unterabfragemethode.

Das Obige ist der Inhalt der MySQL-Einschränkungen und mehrerer Paging-Formulare. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

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