Heim > Datenbank > MySQL-Tutorial > In diesem Artikel wird erläutert, wie MySQL Ergebnisse basierend auf der Reihenfolge der ID-Werte zurückgibt.

In diesem Artikel wird erläutert, wie MySQL Ergebnisse basierend auf der Reihenfolge der ID-Werte zurückgibt.

藏色散人
Freigeben: 2021-10-26 16:42:26
nach vorne
1895 Leute haben es durchsucht

Ich bin heute auf ein Problem gestoßen, das heißt, es gibt eine Abfrage, die die Ergebnismenge in der Reihenfolge des angegebenen ID-Werts zurückgeben muss. Tatsächlich kann sie auch zum Sortieren in das Programm eingefügt werden, aber ich wollte es plötzlich sehen Wenn ich MySQL direkt zum Abfragen und Zurückgeben verwenden könnte, suche ich nach Hilfe bei der Funktionsimplementierung.

Field()-Funktion

Mysql bietet eine Funktion Field(), die die Sortierung entsprechend der von uns vorgegebenen Reihenfolge anpassen kann

Beispiel:

Angenommen, es gibt eine Stadtinformationstabelle namens Regionen mit der Primärschlüssel-ID und Ein Namensattributname, jetzt möchte ich die IDs 2, 3, 1 abfragen und sie in dieser Reihenfolge zurückgeben

<p>select id, name from regions;#id        name<br> 1        北京 2        上海 3        深圳<br></p>
Nach dem Login kopieren

Denn wenn wir „Order By Field“ verwenden, geben wir an, dass der Primärschlüssel nach der Primärschlüssel-ID sortiert wird. Es wird die ID verwendet, um Datensätze mit den Bedingungen 2, 3, 1 zu finden Sie können also sehen, dass es in Extra einen Using-Index gibt. Wenn Sie zu einem anderen nicht indizierten Feld wechseln, ist dieser nicht vorhanden. Die Order By-Klausel kann diesen Index nicht verwenden und kann nur die Filesort-Sortierung verwenden. Deshalb gibt es „Filesort verwenden“ in „Extra“. Der ungefähre Vorgang ist wie folgt: „Beginnen Sie mit dem ersten Blattknoten des ID-Index und scannen Sie alle.“ Blattknoten der Reihe nach

Gehen Sie zum Primärschlüsselindex (Clustered-Index) entsprechend der in jedem Blattknoten aufgezeichneten Primärschlüssel-ID, um die tatsächlichen Zeilendaten zu finden

Bestimmen Sie, ob die Zeilendaten die Bedingungen von id = 2, 3, 1 erfüllen. Wenn es zutrifft, nehmen Sie es heraus und kehren Sie zurück

Grundprinzipien Nach dem Durchlaufen der gesamten Tabelle sagten einige Leute, dass es nach der ID des ausgewählten Datensatzes in der FELD-Liste sucht und die Position zurückgibt, wobei die Position als Sortierbasis verwendet wird. Eine solche Verwendung führt zur Verwendung von Filesort (natürlich ist die Verwendung von Filesort nicht unbedingt langsamer, manchmal ist es schneller, als es nicht zu verwenden), was eine sehr ineffiziente Sortiermethode ist.

Normalerweise wird die ORDER BY-Klausel mit der LIMIT-Klausel kombiniert, um nur einen Teil der Zeilen abzurufen. Wenn Sie alle Zeilen sortieren, nur um die oberste Zeile herauszunehmen, ist dies offensichtlich kein effizienter Ansatz. Die Funktion

Summary

Field() kann uns dabei helfen, einige erforderliche Sortierungen direkt auf der Datenbankebene durchzuführen und den Geschäftscode zu vereinfachen. Es wird jedoch empfohlen, sie zu verwenden, wenn Die Häufigkeit der Datenänderungen ist gering oder der Datencache ist lang. Wenn die Datenmenge groß ist, können Sie die Daten mithilfe der Datenbank abfragen und im Programm sortieren. Empfohlenes Lernen: „

MySQL-Video-Tutorial.“ "

Das obige ist der detaillierte Inhalt vonIn diesem Artikel wird erläutert, wie MySQL Ergebnisse basierend auf der Reihenfolge der ID-Werte zurückgibt.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage