Das Verständnis der verschiedenen Arten von Indizes kann Ihre MySQL-Abfrageleistung erheblich verbessern. In diesem Artikel befassen wir uns mit Covering-, Composite- und Spaltenindizes und gehen auf häufige Fragen zu ihrer Verwendung ein.
Ein Covering-Index umfasst alle Spalten, die von einer Abfrage abgerufen werden, mit Ausnahme der in der WHERE-Klausel verwendeten Spalten. Dadurch kann die Abfrage-Engine die erforderlichen Daten direkt aus dem Index abrufen, ohne auf die Tabellendaten zugreifen zu müssen. Andererseits wird ein Spaltenindex für eine einzelne Spalte erstellt.
Ein zusammengesetzter Index wird für mehrere erstellt Spalten. Die Reihenfolge der Spalten in der Indexdefinition ist entscheidend, da nur der ganz linke Teil des zusammengesetzten Index für die Indizierung verwendet werden kann. Wenn ein zusammengesetzter Index als (col3, col4) definiert ist und die Abfrage nur col3 in der WHERE-Klausel verwendet, wird nur ein Teil des zusammengesetzten Index verwendet.
MySQL Wählt normalerweise den Index mit der höchsten Kardinalität für eine bestimmte Abfrage aus. In einer Situation, in der separate Indizes für verschiedene Spalten vorhanden sind, wird derjenige mit eindeutigeren Werten bevorzugt. Im Allgemeinen ist es nicht möglich, in einer einzigen Abfrage mehrere Indizes für dieselbe Tabelle zu verwenden. Allerdings können Unterabfragen oder zusammengesetzte Indizes als Problemumgehungen verwendet werden.
Die Verwendung eines abdeckenden Index kann die Leistung erheblich verbessern, da der Zugriff auf die Tabellendaten nicht mehr erforderlich ist. Das Erstellen zu vieler abdeckender Indizes kann jedoch zu einer Indexaufblähung und Leistungseinbußen führen. Zusammengesetzte Indizes sind im Allgemeinen effizienter als Spaltenindizes, wenn mehrere Spalten an einer Abfrage beteiligt sind.
Das Verhalten von Indizes unterscheidet sich geringfügig zwischen MyISAM- und InnoDB-Speicher-Engines. In InnoDB ist der Primärschlüssel implizit in allen Sekundärindizes enthalten, wodurch diese effektiv zu zusammengesetzten Indizes werden. Dadurch nutzt InnoDB abdeckende Indizes effizient, auch wenn der Primärschlüssel nicht explizit in der WHERE-Klausel verwendet wird. MyISAM hingegen weist dieses Verhalten nicht auf.
Das obige ist der detaillierte Inhalt vonCovering-, Composite- oder Column-Index: Welchen MySQL-Index sollte ich verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!