Sind Spalten, die keine Indizes sind, zusammen mit dem Index in MySQL, MyISAM und InnoDB auf der Festplatte sortiert?
Ein falscher Gedanke, den ich zu schreiben begann:
Ich denke das wahrscheinlich nicht, da sie nicht indiziert sind; Wenn sie sortiert wären, würde dies bedeuten, dass sie Indizes sind.
Dies ist nicht korrekt, da jede Indexspalte nach der Reihenfolge ihres eigenen Inhalts sortiert ist. Ich frage jedoch, ob jede Zeile (oder nur einige Spalten) mit dem entsprechenden Index sortiert werden soll.
Zur Erklärung sage ich: Dies wäre nützlich, um die Auswahl von Zeilenbereichen, die nebeneinander neben ihren Indizes stehen, schneller zu machen. Wenn ich zum Beispiel möchte select * where id >1000 and id<2000
(es kann Fehler in der MySQL-Syntax geben, ich weiß es nicht genau), kann die ID-Spalte selbst schnell von der Festplatte gelesen werden, da wahrscheinlich ihre Zellen von 1000 bis 2000 auf der physischen Festplatte zusammen bleiben . Andere Spalteninhalte, die den IDs 1000 bis 2000 entsprechen, können jedoch an verschiedenen Stellen auf der physischen Festplatte geschrieben werden. Wenn sie auch sortiert sind, werden sie schneller gelesen. Ich denke, vielleicht sortiert MySQL diese Spalten auf der physischen Festplatte automatisch, um solche Vorgänge auszuführen.
Sind sie in anderen Datenbanktypen (PostgreSQL usw.) sortiert?
27. Dezember: Aus den beiden Antworten geht hervor, dass in dem Fall, in dem ein Clustered-Index / Primärschlüssel vorhanden ist, die einfachen Zeilen selbst nicht auf der physischen Festplatte sortiert sind (wie ich dachte, dass dies möglich ist), und sogar der Clustered-Index nicht sortiert, wenn es B-Baum ist, habe ich über B-Baum gelesen und sehe, dass seine Knoten, wie ich verstehe, an zufälligen Stellen auf der Festplatte bleiben.
quelle