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

Einfaches Beispiel zum Hinzufügen und Entfernen von HTML-Knoten

Einfaches Beispiel für das Hinzufügen und Entfern...

So installieren und implementieren Sie MySQL 8.0 unter CentOS8

Die offizielle Version 8.0.11 von MySQL 8 wurde v...

Zusammenfassung der Befehle zur Benutzerverwaltung im Linux-System

Benutzer- und Gruppenverwaltung 1. Grundlegende K...

So ändern Sie Flash-SWF-Dateien in Webseiten

Ich denke, dies ist ein Problem, auf das viele Leu...

Ubuntu Docker-Installation in VMware (Containererstellung)

1. Mindmap 2. So bauen Sie einen Container 2.1 Vo...

Einführung in die grundlegenden Konzepte und Technologien der Webentwicklung

Heute stellt dieser Artikel Anfängern einige grun...

Detaillierte Analyse des Linux-Kernel-Makros container_of

1. Wie oben erwähnt Ich habe dieses Makro gesehen...

Zusammenfassung der MySQL-Sperrwissenspunkte

Das Konzept des Schlosses ①. Im wirklichen Leben ...

VUE implementiert eine Timeline-Wiedergabekomponente

In diesem Artikelbeispiel wird der spezifische Co...

So verwenden Sie vue3+TypeScript+vue-router

Inhaltsverzeichnis Einfach zu bedienen Erstellen ...

Einige Frontend-Grundlagen (HTML, CSS) aus der Praxis

1. Die Div-CSS-Maushandform ist Cursor:Zeiger; 2. ...