Detaillierte Erklärung zum effizienten MySQL-Paging

Detaillierte Erklärung zum effizienten MySQL-Paging

Vorwort

Normalerweise wird für MySQL-Abfragen mit großen Datenmengen eine „Paging“-Strategie verwendet. Wenn die Seite jedoch an eine spätere Position umgeblättert wird, wird die Abfrage sehr langsam, da MySQL viel Zeit mit dem Scannen der Daten verbringt, die verworfen werden müssen.

Grundlegende Paging-Techniken

Um eine effiziente Paginierung zu erreichen, müssen Sie normalerweise einen kombinierten Index auf die WHERE-Bedingungsspalte und die Sortierspalte in der Abfrage anwenden.
Wenn Sie beispielsweise einen Index (a, b, c) erstellen, kann die folgende Abfrage den Index verwenden, wodurch die Abfrageeffizienz verbessert wird:

1. Feldsortierung

BESTELLEN NACH einem 
ORDER BY a,b
ORDER BY a, b, c 
SORTIEREN NACH a DESC, b DESC, c DESC 

2. Filtern und sortieren

WO a = const ORDER BY b, c 
WO a = const UND b = const ORDER BY c 
WO a = const ORDER BY b, c 
WO a = const UND b > const ORDER BY b, c 

3. Die folgende Abfrage kann den obigen Index nicht verwenden

ORDER BY a ASC, b DESC, c DESC // Die Sortierrichtung ist inkonsistent WHERE g = const ORDER BY b, c // Feld g ist nicht Teil des Index WHERE a = const ORDER BY c // Feld b wird nicht verwendet 
WHERE a = const ORDER BY a, d // Feld d ist nicht Teil des Index

Lösen Sie das Problem des Umblätterns bei großen Datenmengen

1. Ändern Sie die Abfrage von LIMIT M,N in LIMIT N
Beispielsweise muss MySQL bei LIMIT 10000,20 die ersten 10.000 Zeilen lesen und dann die nächsten 20 Zeilen abrufen, was sehr ineffizient ist. Mit LIMIT N können Sie nach der ID des ersten oder letzten Datensatzes auf jeder Seite filtern und dann absteigend und aufsteigend sortieren, um den Ergebnissatz der vorherigen/nächsten Seite abzurufen.
2. Begrenzen Sie die Anzahl der Seiten, die Benutzer umblättern können. Bei der tatsächlichen Produktnutzung interessieren sich Benutzer selten für das 10.000ste Suchergebnis.
3. Verwenden Sie verzögerte Assoziation
Durch die Verwendung eines überdeckenden Indexes zum Abfragen und Zurückgeben des erforderlichen Primärschlüssels und die anschließende Verknüpfung der ursprünglichen Tabelle mit dem zurückgegebenen Primärschlüssel zum Abrufen der erforderlichen Zeilen kann die Anzahl der Zeilen reduziert werden, die Mysql scannt und verwerfen muss.

Beispiele:
Abfrage über den Index (Geschlecht, Bewertung):

mysql> SELECT <Spalten> FROM Profile INNER JOIN (
-> SELECT <Primärschlüsselspalten> FROM Profile
-> WHERE x.sex='M' ORDER BY Bewertungsgrenze 100000, 10
-> ) AS x USING(<Primärschlüsselspalten>);

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:
  • MySQL-Paging-Prinzip und effiziente MySQL-Paging-Abfrageanweisung
  • MySQL-Paging-Optimierung auf Millionenebene (MySQL-Fast-Paging auf zehn Millionen Ebenen)
  • MySQL begrenzt die gemeinsame Nutzung von Paging-Optimierungsmethoden
  • Beispiele für Paging-Abfragen für drei Datenbanken: Oracle, MySQL und SqlServer
  • Detaillierte Erklärung des PHP + MySQL-Paging-Codes
  • mysql+php Paging-Klasse (getestet)
  • Analyse der MySQL-Paging-Optimierung
  • Optimieren Sie das MySQL-Limit, verweisen Sie auf den zusammengesetzten Index der schnellen Paging von einer Million auf zehn Millionen und wenden Sie ihn auf ein leichtes Framework an
  • So verwenden Sie die Select-Anweisung, um eine MySQL-Paging-Abfrage in PHP zu implementieren
  • Vergleich zweier Lösungen für Paging-Abfragen in MySQL

<<:  Eine kurze Einführung in die einfache Verwendung der CentOS7-Firewall und offener Ports

>>:  JS realisiert die Kartenausgabe-Animation

Artikel empfehlen

MySQL Server 8.0.13.0 Installations-Tutorial mit Bildern und Text

Installieren Sie 8.0.13 basierend auf MySQL 6.1.3...

Lösen Sie das Problem verstümmelter Daten bei der MySQL-Datenbankmigration

Unter den Anweisungen meines Vorgesetzten übernah...

Docker-Konfiguration Alibaba Cloud Container Service-Betrieb

Konfigurieren des Alibaba Cloud Docker Container ...

Funktionsprinzip und Implementierungsmethode der Vue-Anweisung

Einführung in Vue Die aktuelle Ära der großen Fro...

Detaillierte Erläuterung der Javascript-Wissenspunkte

Inhaltsverzeichnis 1. Grundlegende Einführung in ...

CSS3-Übergang zur Implementierung eines Benachrichtigungsnachrichtenkarussells

Vue-Version, kopiere sie in die Datei und verwend...

Ein paar Dinge zu favicon.ico (am besten im Stammverzeichnis ablegen)

Öffnen Sie eine beliebige Webseite, zum Beispiel ...

Farbschemata für Websites Die richtigen Farben für Ihre Website auswählen

Beeinflusst Farbe die Website-Besucher? Vor einig...

So installieren Sie Docker mit YUM

Wie in der folgenden Abbildung dargestellt: Wenn ...