Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL zu viele Indizes?

Datenabruf -- SELECT-Anweisungen.

Datenmanipulation -- INSERT-, UPDATE-, DELETE-Anweisungen.

Wenn Sie das Gefühl haben, dass Sie eine bessere Datenabrufleistung erzielen möchten.

Auf Tabellen, die einer starken Datenmanipulation ausgesetzt sind – Einfügen, Aktualisieren...

Abfragen müssen die Reihenfolge der Spalten adressieren, wenn es sich um einen abdeckenden Index handelt (ein Index für mehr als eine Spalte), von links nach rechts in der Indexspaltendefinition. Die Spaltenreihenfolge in der Anweisung spielt keine Rolle, nur die der Spalten 1, 2 und 3 - eine Anweisung muss einen Verweis auf Spalte 1 haben, bevor der Index verwendet werden kann. Wenn nur auf Spalte 2 oder 3 verwiesen wird, kann der abdeckende Index für 1/2/3 nicht verwendet werden.

In MySQL kann nur ein Index pro SELECT/Anweisung in der Abfrage verwendet werden (Unterabfragen/usw. werden als separate Anweisung angesehen). Und es gibt eine Grenze für den Speicherplatz pro Tabelle, den MySQL zulässt. Darüber hinaus macht das Ausführen einer Funktion für eine indizierte Spalte den Index nutzlos - IE:

WHERE DATE(datetime_column) = ...