Was ist ein Index?
Der Index ist eine Datenstruktur, die es der Speicher-Engine ermöglicht, Datensätze schnell zu finden. Man kann ihn auch als Datenverzeichnis bezeichnen. Die Indexdatei wird im B-Tree-Format gespeichert
Welche Rolle spielt der Index?
1. Indizes können den Datenabruf sowie die Gruppierung und Sortierung von Daten beschleunigen.
Indizes können die Eindeutigkeit von Daten sicherstellen.
3 Geschwindigkeit
Nachteile der Indizierung?
1. Die Erstellung und Pflege von Indizes nimmt Zeit in Anspruch und nimmt mit zunehmender Indexgröße zu.
Die Erstellung von Indizes verbraucht physischen Speicherplatz
3 erhöht Beim Löschen und Ändern muss der Index auch dynamisch verwaltet werden
Warum kann die Abfragegeschwindigkeit verbessert werden?
Hauptsächlich, weil die Effizienz der sequentiellen Suche geringer ist als die der B + Baum-Struktursuche (dies muss im Detail verstanden werden)
Indextyp?
1. Primärschlüsselindex
Primark-Schlüssel Es handelt sich um einen speziellen eindeutigen Index, der keine Nullwerte zulässt. Im Allgemeinen wird der Primärschlüsselindex gleichzeitig mit der Erstellung der Tabelle erstellt. Hinweis: Eine Tabelle kann nur einen Primärschlüssel haben.
2. Eindeutiger Index
Das Schlüsselwort unique für die eindeutige Indexeinstellung. Der Wert der eindeutigen Indexspalte muss eindeutig sein, es sind jedoch Nullwerte zulässig. Bei einem zusammengesetzten Index muss die Kombination der Spaltenwerte eindeutig sein.
3. Gewöhnlicher Index
Dies ist der einfachste Index, er unterliegt keinen Einschränkungen.
4. Zusammengesetzter Index
bedeutet, dass ein Index mehrere Spalten enthält, die hauptsächlich zur Vermeidung von Tabellenrückfragen verwendet werden
ALTER TABLE `table_name` ADD PRIMARY KEY (`column`) ;
2. Fügen Sie UNIQUE (eindeutiger Index)
ALTER TABLE ` hinzu Tabellenname` ADD UNIQUE (`Spalte`);
3. -- 3. INDEX hinzufügen (normaler Index)
ALTER TABLE `Tabellenname` ADD INDEX Indexname (`Spalte`);
4. -- 4. FULLTEXT hinzufügen (Volltextindex)
ALTER TABLE `table_name` ADD FULLTEXT (`column`);
5. Hinzufügen Mehrspaltiger Index
ALTER TABLE `table_name` ADD INDEX index_name (`column1`, `column2`, `column3`);
Wichtige Punkte
Warum brauchen wir einen kombinierten Index auf Basis eines einspaltigen Indexes?
Weil MySQL nur einen der effizientesten Indizes verwendet, ohne einen kombinierten Index zu erstellen, und die Effizienz mittelmäßig istWas ist das Prinzip ganz links im kombinierten Index?
Der kombinierte Index Benutzername, Stadt, Alter entspricht tatsächlich der Erstellung der folgenden drei kombinierten Sätze Indizes:
1.Benutzername,Stadt,Alter; 2.Benutzername,Stadt
Warum gibt es keinen kombinierten Index wie Stadt,Alter? Dies ist auf das „ganz linke Präfix“ des MySQL-Verbundindex zurückzuführen. Das einfache Verständnis besteht darin, die Kombination nur ganz links zu beginnen. Nicht nur Abfragen, die diese drei Spalten enthalten, verwenden diesen kombinierten Index, sondern auch die folgende SQL verwendet diesen kombinierten Index:
SELECT * FROM mytable WHREE username="admin" AND city="Zhengzhou "SELECT * FROM mytable WHREE username ="admin"
Die folgenden werden nicht verwendet:
SELECT * FROM mytable WHREE age=20 AND city="Zhengzhou"SELECT * FROM mytable WHREE city="Zhengzhou"
Prinzipien zum Erstellen von Indizes:
Prinzip ganz links
Am besten keine Indizes für Tabellen mit kleiner Kardinalität erstellen
Versuchen Sie, Spalten mit hoher Unterscheidungsfähigkeit als Indizes auszuwählen
Versuchen Sie, einen erweiterten Index zu erstellen, nicht erstellen ein neuer Index.
Erstellen Sie Indizes für Felder, die häufig als Abfragebedingungen, Sortierung, Gruppierung und gemeinsame Operationen verwendet werden.
Begrenzen Sie die Anzahl der Indizes und tun Sie dies nicht Erstellen Sie Indizes blind
Versuchen Sie, Indizes mit einer kleinen Datenmenge zu verwenden und Präfixe für die Indizierung zu verwenden
Löschen Sie Indizes, die nicht mehr verwendet werden oder selten verwendet
Informationen zur Indexoptimierung:
Vermeiden Sie die Verwendung von Berechnungen für Indexspalten
Vermeiden Sie die Verwendung von not für Indexspalten
Vermeiden Sie die Verwendung von is null und is not null für Indexspalten
Befolgen Sie das Indexprinzip ganz links
Sie sollten versuchen, die Verwendung des Operators != oder <> in der where-Klausel zu vermeiden, da die Engine sonst die Verwendung des Index und aufgibt Führen Sie einen vollständigen Tabellenscan durch
Fuzzy-Abfragen darf kein Prozentzeichen vorangestellt werden, sonst führt es zu einem vollständigen Tabellenscan
Mit oder in der where-Klausel zum Verbinden von Bedingungen führt dazu, dass die Engine die Verwendung des Index aufgibt. Bei der Durchführung eines vollständigen Tabellenscans
Wenn der Spaltentyp eine Zeichenfolge ist, müssen die Daten in Anführungszeichen gesetzt werden , andernfalls wird der Index nicht verwendet
Das obige ist der detaillierte Inhalt vonWissenspunkte zur Indizierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!