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

Alle Spalten der Tabelle sollten indiziert werden oder nicht MySQL-Datenbank?

Das Erstellen eines Indexes erfordert zusätzlichen Speicherplatz, und da zu viele Indizes Probleme verursachen können, die sich aus den Größenbeschränkungen des Dateisystems ergeben, muss sorgfältig überlegt werden, um die richtigen Felder für den Index auszuwählen.

Da Indizes nur verwendet werden, um die Suche nach einem passenden Feld in den Datensätzen zu beschleunigen, liegt es nahe, dass das Indizieren von Feldern, die nur für die Ausgabe verwendet werden, einfach eine Verschwendung von Speicherplatz und Verarbeitungszeit beim Durchführen einer Einfüge- oder Löschoperation und damit wäre sollte vermieden werden. Auch angesichts der Natur einer binären Suche ist die Kardinalität oder Eindeutigkeit der Daten wichtig. Die Indizierung für ein Feld mit einer Kardinalität von 2 würde die Daten halbieren, während eine Kardinalität von 1.000 ungefähr 1.000 Datensätze zurückgeben würde. Bei einer so niedrigen Kardinalität wird die Effektivität auf eine lineare Sortierung reduziert, und der Abfrageoptimierer vermeidet die Verwendung des Index, wenn die Kardinalität größer als 30 % der Datensatznummer ist, wodurch der Index effektiv zu einer Platzverschwendung wird.

Es ist also besser, eine Indizierung für eine Gruppe von Spalten hinzuzufügen.