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

MySQL:Unterschied zwischen `... ADD INDEX(a); ... ADD INDEX(b);` und `... ADD INDEX(a,b);`?

Der kombinierte INDEX ist eine Kombination der Schlüssel "a" und "b". Es verbessert den Zugriff erheblich, wenn entweder "a" oder "a" UND "b" Teil des Suchausdrucks sind.

Dieser Index ist nicht hilfreich, wenn Sie in Ihren SQL-Anweisungen nur "b" angeben.

Daher kann es sinnvoll sein, zwei verschiedene Indizes anzugeben - aber sie sollten unterschiedliche Namen verwenden.

Abhängig von den Zugriffsmustern würde ich einen Index auf "a" und "b" und einen zusätzlichen Index auf "b" empfehlen, wenn dies Ihren Anforderungen entspricht.

Bitte beachten Sie, dass jeder zusätzliche Index die Datenbank bei allen Operationen verlangsamt, die Daten verändern. Manchmal ist es besser, einige Indizes fernzuhalten. Es ist normalerweise ein guter Rat, Indizes NICHT für Spalten einer Tabelle zu verwenden.

Noch ein Hinweis:Um zu entscheiden, ob ein INDEX(a,b) oder INDEX(b,a) verwendet werden soll, werfen Sie einen Blick auf die Verteilung Ihrer Daten. Setzen Sie die Werte mit der größeren Streuung verschiedener Werte in die erste Spalte des Index, um die Selektivität dieses Index zu erhöhen. Dieser Wert basiert normalerweise auf der Qualität des ersten Indexelements.

Beispielsweise sollte ein Index für die Spalten NAME und GESCHLECHT als INDEX(NAME, GESCHLECHT) erstellt werden, da es viele weitere Namen gibt, die von unterschiedlichem Geschlecht(en ?) sind.