Mysql-Indexdetails:
In MySQL können Indizes in zwei Typen unterteilt werden: Hash-Index und Btree-Index.
Unter welchen Umständen kann der B-Tree-Index verwendet werden?
1. Vollwert-Matching-Index
Zum Beispiel:
orderID="123"
2. Passen Sie die Präfixindexabfrage ganz links an
anZum Beispiel: Erstellen Sie einen gemeinsamen Index für Benutzer-ID- und Datumsfelder.
Wenn dann die Benutzer-ID als Bedingung eingegeben wird, kann die Benutzer-ID im Index verwendet werden. Wenn das Datum direkt als Bedingung eingegeben wird, kann der Index nicht verwendet werden.
3. Abfrage nach Spaltenpräfixen
Zum Beispiel: order_sn like „134 %“. Dies kann den Index verwenden.
4. Abfrage des passenden Bereichswerts
createTime>'2015-01-09' und createTime<'2015-01-10'
5. Passen Sie die linke vordere Spalte genau an und stimmen Sie den Bereich mit einer anderen Spalte überein
Zum Beispiel:
userId=1 und createTime>'2016-9-18'
6. Eine Abfrage, die nur auf den Index zugreift, wird als abdeckender Index bezeichnet, und der Index enthält die Daten der Abfragespalte.
Einschränkungen des BTREE-Index
1. Wenn die Suche nicht in der Spalte ganz links im Index beginnt, kann der Index nicht verwendet werden.
Erstellen Sie beispielsweise einen gemeinsamen Index:
Die Felder „orderId“ und „createTime“ erstellen einen gemeinsamen Index. Wenn Sie nur die Bedingung „createTIme“ ohne die Bedingung „orderid“ eingeben, wird dieser Index nicht verwendet.
2. Wenn Sie einen Index verwenden, können Sie die indizierten Spalten nicht überspringen.
Drei Spalten:
Datum, Name und Telefonnummer bilden Spalten und Indizes. Wenn Sie bei der Abfrage nur Datum und Telefonnummer eingeben, können Sie das Datum nur als Index zum Filtern verwenden.
3.NOT IN- und <>-Vorgänge können keine Indizes verwenden.
4. Wenn in der Abfrage eine Bereichsabfrage für eine bestimmte Spalte vorhanden ist, können alle Spalten rechts davon den Index nicht verwenden.
Funktionen des Hash-Index
Der Hash-Index wird basierend auf der Hash-Tabelle implementiert. Der Hash-Index kann nur verwendet werden, wenn die Abfragebedingungen genau mit allen Spalten im Hash-Index übereinstimmen. Es kann sich nur um eine äquivalente Abfrage handeln.
Für alle Spalten im Hash-Index berechnet die Speicher-Engine einen Hash-Code für jede Zeile und der Hash-Code wird im Hash-Index gespeichert.
Einschränkungen:
1. Es muss zweimal gelesen werden, zuerst den Hash lesen, um die entsprechende Zeile zu finden, und dann die entsprechenden Zeilendaten lesen.
2.Hash-Index kann nicht zum Sortieren verwendet werden.
3. Es wird nur eine präzise Suche unterstützt, eine Teilindexsuche wird nicht unterstützt und eine Bereichssuche wird nicht unterstützt.
Hash-Konflikt:
Hash-Indizes können nicht für Felder mit schlechter Selektivität verwendet werden, müssen aber zum Erstellen von Hash-Indizes für Spalten mit starker Selektivität verwendet werden.
Zum Beispiel: Erstellen Sie keinen Hash-Index für das Geschlechtsfeld.
Warum Indizes verwenden?
1. Indizes reduzieren die Datenmenge, die die Speicher-Engine scannen muss, erheblich. Der Index ist kleiner als die Datengröße.
2. Indizes können uns beim Sortieren helfen, um die Verwendung temporärer Tabellen zu vermeiden. Indizes sind geordnet.
3. Indizes können zufällige E/A in sequentielle E/A umwandeln
Ist es nicht umso besser, je mehr Indizes vorhanden sind?
1. Indizes erhöhen die Kosten für Schreibvorgänge
2. Zu viele Indizes verlängern die Abfrageoptimierungs- und Auswahlzeit.
Indexierungsstrategie
1. Ausdrücke oder Funktionen können nicht für Indexspalten verwendet werden
Zum Beispiel:
wählen Sie * aus dem Produkt aus, wobei to_days(out_date) –to_days(current_date)<=30, out_date die Indexspalte ist.
geändert in:
Wählen Sie* aus dem Produkt aus, wobei out_date 2. Die Indexgröße darf einen bestimmten Wert nicht überschreiten. Die Größe der Inodb-Indexspalte beträgt 200 Länge. 3. Selektivität von Präfix- und Indexspalten. Index idx_NAME für Tabelle (Konto) erstellen; 4. Gewerkschaftsindex So wählen Sie die Reihenfolge der Indexspalten aus. 1. Spalten, die häufig indiziert werden. 2. Säulen mit hoher Selektivität haben Vorrang. 3. Erstellen Sie Indizes für kleine Spalten. Vielen Dank für das Lesen dieses Artikels. Ich hoffe, er kann allen helfen. Vielen Dank für Ihre Unterstützung dieser Website!