MySQL Limit kann Datenbankdaten segmentweise abfragen und wird hauptsächlich beim Paging verwendet. Obwohl die Datenmenge der heutzutage geschriebenen Websites in die Tausende geht, spielen einige kleine Optimierungen keine große Rolle, die Entwicklung muss jedoch bis zum Äußersten gehen und eine perfekte Leistung anstreben. Im Folgenden sind einige Methoden zur Leistungsoptimierung aufgeführt. Limit-Syntax: SELECT * FROM Tabelle LIMIT [Offset,] Zeilen | Zeilen OFFSET Offset Mit der LIMIT-Klausel können Sie eine SELECT-Anweisung zwingen, eine bestimmte Anzahl von Datensätzen zurückzugeben. LIMIT akzeptiert ein oder zwei numerische Argumente. Das Argument muss eine ganzzahlige Konstante sein. Wenn zwei Argumente angegeben werden, gibt das erste Argument den Offset der ersten zurückgegebenen Zeile und das zweite Argument die maximale Anzahl der zurückgegebenen Zeilen an. Die anfängliche Datensatzzeile hat einen Offset von 0 (nicht 1). Unterstützungslimit # Offset # Syntax: mysql> SELECT * FROM table LIMIT 5,10; // Zeilen 6-15 abrufen //Um alle Zeilen von einem bestimmten Offset bis zum Ende des Datensatzes abzurufen, können Sie den zweiten Parameter als -1 angeben mysql> SELECT * FROM table LIMIT 95,-1; // Zeilen 96-letzte abrufen //Wenn nur ein Parameter angegeben wird, gibt er die maximale Anzahl der zurückzugebenden Zeilen an. Mit anderen Worten, LIMIT n entspricht LIMIT 0,n mysql> SELECT * FROM table LIMIT 5; // Rufe die ersten 5 Zeilen ab Limit n,m bedeutet, m Datensätze auszuwählen, beginnend mit dem n-ten Datensatz. Die meisten Entwickler verwenden diese Art von Anweisung gerne, um das klassische Paging-Problem im Web zu lösen. Bei kleinen Datensätzen ist dies kein großes Problem. Bei Anwendungen wie Foren, die möglicherweise sehr große Datenmengen enthalten, ist die Effizienz der Grenze n,m sehr gering. Weil die Daten jedes Mal neu ausgewählt werden müssen. Wenn Sie nur die ersten fünf Datensätze auswählen, ist dies sehr einfach und bequem. Wenn Sie jedoch bei 1 Million Datensätzen fünf Datensätze ab der 800.000. Zeile auswählen, müssen Sie die Datensätze dennoch bis zu dieser Position scannen. Das heißt, das Limit 10000,20 bedeutet, dass 10020 Zeilen gescannt werden, die die Bedingungen erfüllen, die ersten 10000 Zeilen verworfen und die letzten 20 Zeilen zurückgegeben werden. Hier liegt das Problem. Wenn das Limit 100000,100 verwendet wird, müssen 100100 Zeilen gescannt werden. In einer Anwendung mit hoher Parallelität muss jede Abfrage mehr als 100.000 Zeilen scannen, und die Leistung wird definitiv stark reduziert. Vergleich der Datenleseeffizienz bei unterschiedlichen Datenmengen: 1. Wenn der Versatz klein ist: Wählen Sie * aus Tabellenlimit 5,10 Nach mehreren Durchläufen blieb die Zeit zwischen 0,0004 und 0,0005 Wählen Sie * aus der Tabelle, wobei ID >=( ID aus Tabelle auswählen Sortieren nach ID-Limit 10,1 ) Grenze 10 Nach mehreren Durchläufen blieb die Zeit zwischen 0,0005 und 0,0006. Daher ist es bei kleinem Offset effizienter, das Limit direkt zu verwenden! 2. Wenn die Offsetdaten groß sind: wähle * aus Tabellenlimit 10000,10 Nach mehreren Durchläufen blieb die Zeit bei etwa 0,0187 Sekunden. Wählen Sie * aus der Tabelle, wobei ID >=( Wählen Sie die ID aus der Tabelle aus. Sortieren nach ID-Limit 10000,1 ) Grenze 10 Nach mehreren Durchläufen blieb die Zeit bei etwa 0,061 Sekunden, also etwa 1/3 der vorherigen Zeit. Wenn der Offset groß ist, ist die Verwendung des letzteren daher weniger effizient! Dies ist das Ergebnis der Verwendung der ID als Index. Wenn die ID als Primärschlüssel der Datentabelle verwendet wird: wähle ID aus Tabellenlimit 10000,10 Die Abfrage dauert ca. 0,04 Sekunden, was daran liegt, dass als Index der Primärschlüssel id verwendet wird. Leistungsoptimierung einschränken: Wählen Sie * aus der Zyklopädie, wobei ID>=( Wählen Sie Max(ID) aus ( ID aus der Zyklopädie auswählen Sortieren nach ID-Limit 90001 ) Als tmp ) Grenze 100; Wählen Sie * aus der Enzyklopädie, wobei ID>=( Wählen Sie Max(ID) aus ( ID aus der Enzyklopädie auswählen Sortieren nach ID-Limit 90000,1 ) Als tmp ) Grenze 100; Der zweite Satz ist schneller, wenn die letzten 100 von 90.000 Datensätzen abgerufen werden. Denn der erste Satz nimmt zuerst die ersten 90.001 Datensätze, nimmt den größten ID-Wert als Startkennung und verwendet ihn dann, um schnell die nächsten 100 Datensätze zu lokalisieren; während der zweite Satz nur den letzten Datensatz nimmt und dann den ID-Wert als Startkennung verwendet, um die nächsten 100 Datensätze zu lokalisieren. Der zweite Satz lässt sich wie folgt verkürzen: Wählen Sie * aus der Zyklopädie, wobei ID>=( Wählen Sie „ID aus“ ( ID aus der Enzyklopädie auswählen Sortieren nach ID-Limit 90000,1 ) Als tmp ) Grenze 100; Der Max-Vorgang wird ausgelassen und IDs werden grundsätzlich erhöht. Optimierung der Paging-Datenleistung: 1. Für Datentabellen mit großen Datenmengen können Sie Primärschlüssel und Indexfelder erstellen, um Indextabellen zu erstellen, die entsprechenden Primärschlüssel über die Indextabellen abzufragen und dann die Datentabellen mit großen Datenmengen über die Primärschlüssel abzufragen. 2. Wenn Sie eine Where-Bedingung haben und den Index zum Verwenden des Limits verwenden möchten, müssen Sie einen Index entwerfen, zuerst „Where“ und dann den für das Limit verwendeten Primärschlüssel eingeben und Sie können nur den Primärschlüssel auswählen! Dadurch erhöht sich die Lesegeschwindigkeit 3. Verwendung in: Erhalten Sie zuerst den entsprechenden Primärschlüsselwert über die Where-Bedingung und verwenden Sie dann den Primärschlüsselwert, um den entsprechenden Feldwert abzufragen. Blättern mit dem Cursor: Um die beste Abfrageleistung für MySQL zu erreichen, habe ich die Paging-Abfrage in den Cursor-Abfragemodus geändert: Wählen Sie * aus der Tabelle, wo ID > letzte ID, Limit 20, Sortierung nach Antwort-ID ASC; Die obige last_id ist die ID des letzten Datensatzes auf dieser Seite, sodass die Abfrage „Nächste Seite“ und entsprechend auch die Abfrage „Vorherige Seite“ realisiert werden kann. Cursor-Paging ist nur für sequentielle Daten geeignet und unterstützt keine Seitensprünge. Wir können eine Auto-Inkrement-ID erstellen oder der Datentabelle geordnete Felder hinzufügen: Bei Projekten mit großen Datenmengen sind Seitensprünge nicht sehr nützlich, und Sie können Filterbedingungen verwenden, um den Suchzweck zu erreichen. Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an Das könnte Sie auch interessieren:
|
<<: Führen Sie die folgenden Schritte aus, um Vue-Router in Vue3 zu verwenden
>>: Docker setzt Macvlan ein, um eine hostübergreifende Netzwerkkommunikation zu erreichen
NTP ist ein TCP/IP-Protokoll zur Zeitsynchronisie...
Inhaltsverzeichnis 1. Aufgetretene Probleme 2. An...
Inhaltsverzeichnis 1. Grundkenntnisse: 2. DHCP-Se...
Inhaltsverzeichnis Die Knotenversion stimmt nicht...
Inhaltsverzeichnis 1. Initialisieren Sie das Arra...
Vorwort Um zum Originalcode kompatibel zu sein, b...
Eine beträchtliche Anzahl von Websites verwendet d...
„Replace“ und „Replace into“ von MySQL sind beide...
Im vorherigen Artikel „UID und GID in Docker-Cont...
1. Herunterladen 1. Download-Adresse der offiziel...
Inhaltsverzeichnis Komponenteninfrastruktur Zweck...
Vorwort Dieser Artikel stellt hauptsächlich die r...
Heutige Aufgaben 1. Wahl der Linux-Distribution 2...
Vorwort In letzter Zeit dauert das Herunterfahren...
Inhaltsverzeichnis 1. Global vor jedem 1. Global ...