Mysql
 sql >> Base de données >  >> RDS >> Mysql

Toutes les colonnes de la table doivent être indexées ou non la base de données mysql ?

La création d'un index nécessite de l'espace disque supplémentaire, et un trop grand nombre d'index peut entraîner des problèmes liés aux limites de taille des systèmes de fichiers, une réflexion approfondie doit être utilisée pour sélectionner les bons champs à indexer.

Étant donné que les index ne sont utilisés que pour accélérer la recherche d'un champ correspondant dans les enregistrements, il va de soi que l'indexation des champs utilisés uniquement pour la sortie serait simplement une perte d'espace disque et de temps de traitement lors d'une opération d'insertion ou de suppression, et donc devrait être évité. Compte tenu également de la nature d'une recherche binaire, la cardinalité ou l'unicité des données est importante. L'indexation sur un champ avec une cardinalité de 2 diviserait les données en deux, alors qu'une cardinalité de 1 000 renverrait environ 1 000 enregistrements. Avec une cardinalité aussi faible, l'efficacité est réduite à un tri linéaire et l'optimiseur de requête évitera d'utiliser l'index si la cardinalité est supérieure à 30 % du nombre d'enregistrements, ce qui fait de l'index une perte d'espace.

Il vaut donc mieux ajouter une indexation sur un groupe de colonnes.