Suchvorgänge kommen in Datenbanken sehr häufig vor und die Indizierung ist ein Mittel zur Verbesserung der Suchgeschwindigkeit.
B+-Baumindex
Es ist ein Index im herkömmlichen Sinne, er ist der am häufigsten verwendete und effektivste Index.
Hash-Index
Hash-Index ist ein adaptiver Index. Die Datenbank generiert automatisch einen Hash-Index basierend auf der Nutzung der Tabelle. Wir haben keine Möglichkeit, manuell einzugreifen.
Volltextindex
wird zur Implementierung der Stichwortsuche verwendet. Da Wörter jedoch nur anhand von Leerzeichen segmentiert werden können, wird Chinesisch nicht unterstützt.
Um die Suchfunktion zu implementieren, können Sie Lucene auswählen.
RTree-Index
wird in MySQL selten verwendet und unterstützt nur den Geometriedatentyp im Vergleich zu BTREE. Der Vorteil von RTREE ist die Bereichssuche.
Die Datenbank verwendet Seiten als Speichereinheiten. Eine Seite ist 8 KB (8192 Byte) groß und eine Seite kann N Datensätze speichern.
Die Seite ist unterteilt in: Datenseite und Indexseite im B+-Baum.
Die Höhe des B+-Baums beträgt im Allgemeinen 2–4 Ebenen, sodass die Suche nach einem Zeilendatensatz mit einem bestimmten Schlüsselwert nur 2–4 E/A-Zeiten erfordert, was sehr effizient ist.
Ob es sich um einen Clustered-Index oder einen Nicht-Clustered-Index handelt, ihre logische Struktur ist ein B+-Baum. Der einzige Unterschied zwischen ihnen ist:
Die Datenseite des Clustered-Index speichert vollständige Datensätze; das heißt, der Clustered-Index bestimmt die physische Speicherreihenfolge der Tabelle.
Die Datenseite des nicht gruppierten Indexes werden nur die Adressinformationen gespeichert, die auf den Datensatz verweisen, und seine tatsächlichen Daten wurden im gruppierten Index gespeichert.
Gemeinsamer Index
Der gemeinsame Index kann verwendet werden, wenn die Abfragebedingungen mehrere Spalten umfassen.
Abgedeckter Index
Sie müssen nur den Hilfsindex verwenden, um die Informationen abzurufen, die Sie abfragen möchten, ohne die spezifischen Datensatzinformationen erneut über den Clustered-Index abzufragen.
Da der Covering-Index nicht die gesamte Datensatzzeile enthält, ist seine Größe viel kleiner als der Clustered-Index.
Es eignet sich besser für einige statistische Operationen.
Primärschlüsselindex
Im Primärschlüsselindex speichert die Indexseite den Primärschlüssel und den Offset-Zeiger zur Datenseite; die Datenseite speichert den Primärschlüssel und den Adressraum des Zeilendatensatzes, zu dem der Primärschlüssel gehört.
Sekundärer Index
In MyISAM gibt es keinen strukturellen Unterschied zwischen dem Primärindex und dem Sekundärindex (Sekundärschlüssel), außer dass der Primärindex erfordert, dass der Schlüssel eindeutig ist. und der sekundäre Indexschlüssel kann wiederholt werden.
Zusammenfassend lässt sich sagen, dass in MyISAM Indexdateien und Datendateien getrennt gespeichert werden. Unabhängig davon, ob es sich um einen Primärschlüsselindex oder einen Hilfsindex handelt, handelt es sich bei allen um nicht gruppierte Indizes.
Primärschlüsselindex
Die Indexseite speichert weiterhin den Primärschlüssel und den Offset, der auf die Datenseite zeigt, aber die Datenseite speichert den vollständige Aufzeichnung.
Das heißt, in InnoDB werden Daten und Primärschlüsselindizes zusammen gespeichert.
Hilfsindex
Der im Indexknoten gespeicherte Inhalt ist derselbe, es sind immer noch die Schlüsselwertinformationen und der Offset, der auf die Datenseite zeigt Schlüsselwertinformationen und der Offset der Datenseite. Der Primärschlüssel, der dem Schlüsselwert entspricht. Anschließend kann der Datensatz gefunden werden, indem der Primärschlüsselindex über den Primärschlüssel abgefragt wird.
Zusammenfassend:
Diese Implementierungsmethode des Clustered-Index macht die Suche nach Primärschlüssel sehr effizient, die Suche nach Hilfsindizes muss jedoch sehr effizient sein Rufen Sie zwei Indexdurchgänge ab: Rufen Sie zuerst den Hilfsindex ab, um den Primärschlüssel zu erhalten, und verwenden Sie dann den Primärschlüssel, um die Datensätze im Primärindex abzurufen.
Der Hilfsindex von InnoDB enthält auch die Primärschlüsselspalte. Wenn der Primärschlüssel also relativ groß definiert ist, sind auch andere Indizes groß. Wenn Sie viele Indizes für die Tabelle definieren möchten, versuchen Sie, den Primärschlüssel so klein wie möglich zu definieren. InnoDB komprimiert keine Indizes.
Erstens kann durch die Erstellung eines eindeutigen Index die Eindeutigkeit jeder Datenzeile in der Datenbanktabelle garantiert werden.
Zweitens kann es den Datenabruf erheblich beschleunigen, was auch der Hauptgrund für die Erstellung eines Index ist.
Drittens kann es die Verbindung zwischen Tabellen beschleunigen, was besonders wichtig ist, um die referenzielle Integrität von Daten zu erreichen.
Viertens kann durch die Verwendung von Gruppierungs- und Sortierklauseln zum Datenabruf auch die Zeit für das Gruppieren und Sortieren in der Abfrage erheblich verkürzt werden.
Fünftens können Sie durch die Verwendung von Indizes Optimierungs-Hider während des Abfrageprozesses verwenden, um die Systemleistung zu verbessern.
Erstens nimmt die Erstellung und Pflege von Indizes Zeit in Anspruch, die mit zunehmender Datenmenge zunimmt.
Zweitens müssen Indizes zusätzlich zum von der Datentabelle belegten Datenspeicherplatz auch eine bestimmte Menge an physischem Speicherplatz belegen Clustered-Index, dann benötigen Sie Der Speicherplatz wird größer sein.
Drittens muss beim Hinzufügen, Löschen und Ändern von Daten in der Tabelle der Index dynamisch verwaltet werden, was die Geschwindigkeit der Datenpflege verringert.
Bei Spalten, die häufig durchsucht werden, können Sie die Suche beschleunigen.
Bei der Spalte, die der Primärschlüssel ist, erzwingen Sie die Suche um eindeutig zu sein Die Anordnungsstruktur der Daten in der Struktur- und Organisationstabelle wird häufig in verbundenen Spalten verwendet. Diese Spalten sind hauptsächlich Fremdschlüssel, was die Verbindung beschleunigen kann.
Erstellen Sie Indizes für Spalten, die häufig nach dem Bereich durchsucht werden müssen, da der Index sortiert wurde und der angegebene Bereich kontinuierlich ist wurde sortiert, sodass die Abfrage die Sortierung des Index verwenden kann, um die Sortierabfragezeit zu beschleunigen.
Erstellen Sie einen Index für die Spalte, die häufig in der WHERE-Klausel verwendet wird Beschleunigen Sie die Sortierabfrage. Die Geschwindigkeit der Beurteilung von Bedingungen.
In welchen Situationen ist keine Indizierung erforderlich?
Erstens sollten keine Indizes für Spalten erstellt werden, die in Abfragen selten verwendet oder referenziert werden. Dies liegt daran, dass diese Spalten nur selten verwendet werden und eine Indizierung oder Nicht-Indizierung die Abfragegeschwindigkeit nicht verbessert. Im Gegenteil: Durch das Hinzufügen von Indizes wird die Wartungsgeschwindigkeit des Systems verringert und der Platzbedarf erhöht.
Drittens sollten keine Indizes zu Spalten hinzugefügt werden, die als Text-, Bild- und Bit-Datentypen definiert sind. Dies liegt daran, dass das Datenvolumen dieser Spalten entweder recht groß ist oder nur sehr wenige Werte aufweist.
Viertens sollten keine Indizes erstellt werden, wenn die Änderungsleistung weitaus höher ist als die Abrufleistung. Dies liegt daran, dass die Änderungsleistung und die Abrufleistung im Widerspruch zueinander stehen. Beim Hinzufügen von Indizes wird die Abrufleistung verbessert, die Änderungsleistung wird jedoch verringert. Beim Reduzieren von Indizes erhöht sich die Änderungsleistung und die Abrufleistung verringert sich. Daher sollten keine Indizes erstellt werden, wenn die Änderungsleistung viel höher ist als die Abrufleistung.Das obige ist der detaillierte Inhalt vonWas ist ein Datenbankindex? Detaillierte Erläuterung des Datenbankindex. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!