MySQL begrenzt die Nutzung von Paging-Anweisungen Im Vergleich zu Oracle und MS SqlServer ist die Paging-Methode von MySQL so einfach, dass es manchen die Tränen in die Augen treibt. --Grammatik: SELECT * FROM Tabelle LIMIT [Offset,] Zeilen | Zeilen OFFSET Offset --Beispiel: select * from table limit 5; --Gibt die ersten 5 Zeilen zurück select * from table limit 0,5; --Gibt das Gleiche wie oben an, gibt die ersten 5 Zeilen zurück select * from table limit 5,10; --Gibt die Zeilen 6-15 zurück So optimieren Sie das Limit Wenn eine Abfrageanweisung einen großen Offset hat, wie etwa select * from table limit 10000,10 , ist es am besten, limit nicht direkt zu verwenden. Holen Sie sich stattdessen zuerst die Offset-ID und verwenden Sie dann limit size direkt, um die Daten abzurufen. Die Wirkung wird viel besser sein. wie: Wählen Sie * Von Kunden, wobei Kunden-ID >=( select customer_id Von Kunden Bestellen nach customer_id limit 10000,1 ) Grenze 10; 1. Testexperiment MySQL-Paging verwendet direkt die Paging-Anweisungen „Limit Start“ und „Count“: select * ab Produktlimit Start, Anzahl Wenn die Startseite klein ist, treten bei der Abfrage keine Leistungsprobleme auf. Betrachten wir die Ausführungszeit der Seitenumbrüche von 10, 100, 1000 und 10000 (20 Datensätze pro Seite) wie folgt: Wählen Sie * aus Produktlimit 10, 20 0,016 Sekunden. Wählen Sie * aus Produktlimit 100, 20 0,016 Sekunden. Wählen Sie * aus Produktlimit 1000, 20 0,047 Sekunden. Wählen Sie * aus Produktlimit 10000, 20 0,094 Sekunden. Wir haben gesehen, dass mit zunehmender Anzahl der Startdatensätze auch die Zeit zunimmt. Dies zeigt, dass die Begrenzung der Paging-Anweisung eng mit der Anzahl der Startseiten zusammenhängt. select * from product limit 400000, 20 3.229 Sekunden Schauen wir uns den Zeitpunkt an, als wir die letzte Seite mit Aufzeichnungen entnommen haben. select * from product limit 866613, 20 37.44 Sekunden Für eine Seite mit der höchsten Seitenzahl wie dieser ist diese Zeit offensichtlich unerträglich. Daraus können wir auch zwei Dinge schließen:
2. Leistungsoptimierungsmethode für das Problem des begrenzten Paging 2.1 Verwenden des überdeckenden Index der Tabelle zur Beschleunigung von Paging-Abfragen Wir alle wissen, dass die Abfrage sehr schnell ist, wenn die Anweisung, die eine Indexabfrage verwendet, nur diese Indexspalte (den abdeckenden Index) enthält. Da die Indexsuche über einen optimierten Algorithmus verfügt und sich die Daten im Abfrageindex befinden, muss nicht nach der relevanten Datenadresse gesucht werden, was viel Zeit spart. Darüber hinaus verfügt MySQL auch über einen zugehörigen Index-Cache. Die Wirkung ist besser, wenn der Cache bei hoher Parallelität verwendet wird. In unserem Beispiel wissen wir, dass das ID-Feld der Primärschlüssel ist, daher ist der Standard-Primärschlüsselindex eingeschlossen. Sehen wir uns nun an, wie die Abfrage mit dem überdeckenden Index funktioniert: Wählen Sie die ID aus dem Produktlimit 866613, 20 Die Abfragezeit beträgt 0,2 Sekunden und ist damit etwa 100-mal schneller als die 37,44 Sekunden, die zum Abfragen aller Spalten erforderlich sind. Wenn wir auch alle Spalten abfragen möchten, gibt es zwei Möglichkeiten. id>= Format: Wählen Sie * aus Produkt WHERE ID > =(Wählen Sie die ID aus dem Produktlimit 866613, 1) Limit 20 Die Abfragezeit beträgt 0,2 Sekunden, was einen qualitativen Sprung darstellt. Verwenden von Join SELECT * FROM Produkt a JOIN (wähle ID aus Produktlimit 866613, 20) b ON a.ID = b.id Auch die Abfragezeit ist sehr kurz, super! Tatsächlich verwenden beide das gleiche Prinzip, daher sind die Effekte ähnlich. 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:
|
<<: Analyse des Problems der Hyper-V-Installation unter CentOS 8
>>: Mehrere Möglichkeiten, Bilder in React-Projekte einzuführen
<br />Wir deklarieren DOCTYPE in HTML normal...
Als ich vor einiger Zeit an einer kleinen Funktio...
Dieser Artikel veranschaulicht anhand eines Beisp...
Ich verwende tengine, das Installationsverzeichni...
Inhaltsverzeichnis Was ist ein Index Der Untersch...
Problembeschreibung Installieren Sie nginx auf Te...
Installationsumgebung: CentOS7 64-Bit-Mini-Versio...
1. css: dragTable.css @Zeichensatz "UTF-8&qu...
In diesem Artikelbeispiel wird der spezifische Co...
Übersicht über partitionierte MySQL-Tabellen Wir ...
Build deaktivieren Partitionsausdrücke unterstütz...
Inhaltsverzeichnis Was ist React Fiber? Warum Rea...
1. Befehlseinführung Der Lesebefehl ist ein integ...
1. Laden Sie das neueste Nginx-Docker-Image herun...
Bei der tatsächlichen Webentwicklung ist für das ...