Je suis d'accord avec Cade Roux .
Cet article devrait vous mettre sur la bonne voie :
Une chose à noter, les index en grappe doivent avoir une clé unique (une colonne d'identité, je le recommande) comme première colonne. En fait, cela permet à vos données d'être insérées à la fin de l'index et de ne pas causer beaucoup d'entrées-sorties sur le disque et de divisions de pages.
Deuxièmement, si vous créez d'autres index sur vos données et qu'ils sont construits intelligemment, ils seront réutilisés.
par exemple, imaginez que vous recherchez un tableau sur trois colonnes
état, comté, code postal.
- vous pouvez parfois effectuer une recherche par État uniquement.
- vous pouvez parfois effectuer une recherche par état et par comté.
- vous pouvez fréquemment effectuer des recherches par état, comté, code postal.
Ensuite, un index avec l'état, le comté, le zip. sera utilisé dans ces trois recherches.
Si vous effectuez souvent des recherches uniquement par zip, l'index ci-dessus ne sera pas utilisé (par le serveur SQL de toute façon) car zip est la troisième partie de cet index et l'optimiseur de requêtes ne considérera pas cet index comme utile.
Vous pourriez alors créer un index sur Zip seul qui serait utilisé dans ce cas.
D'ailleurs Nous pouvons tirer parti du fait qu'avec l'indexation multi-colonnes, la première colonne d'index est toujours utilisable pour la recherche. et lorsque vous recherchez uniquement par 'état', c'est efficace mais pas aussi efficace qu'un index à colonne unique sur 'état'.
Je suppose que la réponse que vous cherchez est que cela dépend des clauses where de vos requêtes les plus fréquemment utilisées et également de vos group by.
Cet article sera d'une grande aide :-)