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

Problem beim Wechseln der Registerkarten für die Handschrift von React

Übergeordnete Datei importiere React, { useState ...

Beispiel-Tutorial zur JavaScript-Typerkennungsmethode

Vorwort JavaScript ist eine der am häufigsten ver...

Implementierung eines Web-Rechners auf Basis von JavaScript

In diesem Artikel wird der spezifische JavaScript...

Tabelle zeigt den Grenzcode, den Sie anzeigen möchten

Gemeinsame Eigenschaften von Tabellen Die grundle...

Spezielle Befehle in der MySql-Datenbankabfrage

Erstens: Installation von MySQL Laden Sie die MyS...

Lösen Sie das Problem des Docker-Pull-Image-Fehlers

beschreiben: Installieren Sie die VM unter Window...

Datenbankübergreifende Assoziationsabfragemethode in MySQL

Geschäftsszenario: Abfragen von Tabellen in versc...

So konfigurieren Sie Nginx zur Unterstützung von IPv6 unter Linux

1. Überprüfen Sie, ob das vorhandene Nginx IPv6 u...

Detaillierte Erläuterung des Ausführungsplans, Beispiel für einen Befehl in MySQL

Vorwort Der Befehl „Explain“ ist die primäre Mögl...

jQuery erzielt einen Bildlaufwiedergabeeffekt auf großem Bildschirm

In diesem Artikel wird der spezifische Code von j...

Wie stellt MySQL die Master-Slave-Konsistenz sicher?

Inhaltsverzeichnis Das Grundprinzip von MySQL Mas...

Unterschied zwischen var und let in JavaScript

Inhaltsverzeichnis 1. Bereiche werden in verschie...