Vorwort
Index ist eine Datenstruktur, die MySQL dabei hilft, Daten effizient zu erhalten. Es ist entscheidend für eine hohe Leistung, wird aber oft vergessen oder missverstanden. Indizes werden wichtiger, wenn die Daten größer sind. Eine Datenbank mit kleinem Umfang und geringer Auslastung kann auch ohne Indizes eine gute Leistung erzielen, aber wenn die Datenmenge zunimmt, sinkt die Leistung schnell.
Warum einen Index erstellen?
Das liegt daran, dass die Erstellung eines Index die Leistung des Systems erheblich verbessern kann.
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 zum Gruppieren und Sortieren in Abfragen 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.
Einige Leute fragen sich vielleicht: Das Hinzufügen eines Index hat so viele Vorteile, warum nicht für jede Spalte in der Tabelle einen Index erstellen? Obwohl diese Idee vernünftig ist, ist sie auch einseitig. Obwohl Indizes viele Vorteile haben, ist es sehr unklug, jeder Spalte in der Tabelle einen Index hinzuzufügen.
Das liegt daran, dass das Hinzufügen eines Index auch viele Nachteile hat:
Erstens nimmt die Erstellung und Pflege von Indizes Zeit in Anspruch, und diese Zeit nimmt mit zunehmender Datenmenge zu.
Zweitens müssen Indizes zusätzlich zum von der Datentabelle belegten Datenraum auch eine bestimmte Menge an physischem Platz belegen. Wenn Sie einen Clustered-Index erstellen möchten, ist der erforderliche Speicherplatz größer.
Drittens muss der Index beim Hinzufügen, Löschen und Ändern von Daten in der Tabelle dynamisch verwaltet werden, was die Geschwindigkeit der Datenverwaltung verringert.
Welche Felder eignen sich zum Erstellen von Indizes:
Indizes werden für bestimmte Spalten in der Datenbanktabelle erstellt. Daher sollten Sie beim Erstellen eines Index sorgfältig überlegen, welche Spalten indiziert werden können und welche nicht.
Im Allgemeinen sollten Indizes für diese Spalten erstellt werden, zum Beispiel:
Erstens können Sie die Suche in häufig durchsuchten Spalten beschleunigen;
Zweitens erzwingen Sie die Eindeutigkeit der Spalte als Primärschlüssel und organisieren Sie die Anordnungsstruktur der Daten in der TabelleDrittens handelt es sich bei Spalten, die häufig in Verbindungen verwendet werden, hauptsächlich um Fremdschlüssel, die die Verbindung beschleunigen können
Viertens erstellen Sie einen Index für Spalten, die häufig anhand des Bereichs durchsucht werden müssen, da der Index sortiert wurde und der angegebene Bereich kontinuierlich ist
Fünftens erstellen Sie einen Index für die Spalten, die häufig sortiert werden müssen, da der Index sortiert wurde, sodass die Abfrage die Sortierung des Index verwenden kann, um die Sortierabfragezeit zu beschleunigen
Sechstens: Erstellen Sie Indizes für Spalten, die häufig in WHERE-Klauseln verwendet werden, um die Beurteilung von Bedingungen zu beschleunigen.Das Erstellen eines Index basiert im Allgemeinen auf der Where-Bedingung von select. Wenn die Bedingung von select beispielsweise wheref1 und f2 lautet, ist es nutzlos, wenn wir den Lebenslauf für Feld f1 oder Feld f2 indizieren und f2 gleichzeitig. Es ist sinnvoll zu warten.
Welche Felder sind nicht für die Indexerstellung geeignet:
Außerdem gibt es einige Spalten, die nicht indiziert werden sollten. Im Allgemeinen weisen Spalten, die nicht indiziert werden sollten, die folgenden Merkmale auf:
Erstens sollten keine Indizes für Spalten erstellt werden, die in Abfragen selten verwendet oder referenziert werden. Dies liegt daran, dass diese Spalten selten verwendet werden, ob sie indiziert sind oder nicht,verbessert die Abfragegeschwindigkeit nicht. Im Gegenteil: Durch das Hinzufügen von Indizes wird die Wartungsgeschwindigkeit des Systems verringert und der Platzbedarf erhöht.
Zweitens sollten Indizes für Spalten mit wenigen Datenwerten nicht erhöht werden. Dies liegt daran, dass diese Spalten nur sehr wenige Werte haben, wie beispielsweise die Spalte „Geschlecht“ der Personaltabelle,
In den Ergebnissen der Abfrage machen die Datenzeilen im Ergebnissatz einen großen Teil der Datenzeilen in der Tabelle aus, das heißt, ein großer Teil der Datenzeilen muss in der Tabelle durchsucht werden.
Eine Erhöhung des Index beschleunigt den Abruf nicht wesentlich.
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 Erhöhen des Index 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 größer ist als die Abrufleistung.
So erstellen Sie einen Index:
1. Erstellen Sie einen Index, zum Beispiel createindex
3. Geben Sie beim Erstellen der Tabelle den Index an, z. B. createtabletable_name([...],INDEX[name of index](list of columns));
So zeigen Sie den Index in der Tabelle an:
showindexfromtable_name;Index anzeigen
Indextypen und Erstellungsbeispiele:
1.PRIMARYKEY (Primärschlüsselindex)
mysql>altertabletable_nameaddprimarykey(`column`)
2.UNIQUE oder UNIQUEKEY (eindeutiger Index)
mysql>altertabletable_nameaddunique(`column`)
3.FULLTEXT (Volltextindex)
mysql>altertabletable_nameaddfulltext(`column`)
4.INDEX (normaler Index)
mysql>altertabletable_nameaddindexindex_name(`column`)
5. Mehrspaltiger Index (Clustered Index)
mysql>altertable`table_name`addindexindex_name(`column1`,`column2`,`column3`)
Ändern Sie den Index in der Tabelle:
altertabletablenamedropprimarykey,addprimarykey(fileda,filedb)
Zusammenfassung
Mit Indizes kann die Abfragegeschwindigkeit für Tabellen mit einer großen Anzahl von Datensätzen verbessert werden. Da Indizes jedoch Speicherplatz beanspruchen, können Sie beim Erstellen eines Index auf diesen Artikel zurückgreifen, der für Sie hilfreich sein kann.