mysql - bonnes pratiques: table avec plus d'un indice?
-
02-10-2019 - |
Question
Désolé tout,
Je n'ai cette mini-table avec 3 colonnes, mais je vais énumérer les valeurs soit par une ou l'autre colonne.
1) Est-il acceptable d'avoir deux de ces colonnes avec des index?
2) Faut-il avoir un seul index par table?
3) A la limite, si nous avons une table avec 100 colonnes par exemple, et nous avons 50 d'entre eux avec des index, est-ce ok?
Merci, MEM
La solution
Il est bien d'avoir de nombreux indices, même plusieurs index sur une table, aussi longtemps que vous les utilisez .
Exécuter EXPLIQUEZ vos requêtes et vérifiez quels index sont utilisés. S'il y a des indices qui ne sont pas utilisés par des questions alors ils ne vous donnent pas un avantage et ralentissent juste en bas de modifications à la table. Ces index inutilisés doivent être supprimés.
Vous pouvez également considérer les index sur plusieurs colonnes si vous ne l'avez pas déjà fait.
Autres conseils
Pour répondre rapidement à vos questions, je pense:
- Oui, il est OK d'avoir deux colonnes ou encore plus avec index
- Pas nécessairement. Vous pouvez avoir plus d'un index par table.
- Il est peut-être OK, il est peut-être pas OK. Ça dépend. La chose avec des indices est qu'ils prennent l'espace (dans DISK) et ils font des opérations qui modifient vos données (INSERT / UPDATE / DELETE) plus lent puisque pour chacune et chacun d'entre eux, il y aura une table et INDEX mise à jour en question.
Votre création d'index devrait être guidé par vos requêtes. Voir quelles requêtes allez-vous avoir sur votre système et créer des index en conséquence.
Il n'y a pas de problème d'avoir plus d'un index par table, et non, un index par table n'est pas vraiment une ligne directrice.
Avoir trop d'index est inefficace parce que
- Il nécessite un stockage supplémentaire
- MySQL doit déterminer quel index utiliser pour une requête particulière
Edit: Comme par Pablo et Mark, vous devez comprendre comment vos données sont accessibles pour que vous puissiez construire des indices efficaces. Vous pouvez ensuite affiner et de réduire les indices.