D'un point de vue purement logique, si j'ai un index ixA : (a) et un index ixB (a, b, c), en prenant en compte que la colonne "a" est la seule de l'index ixA et est la première de l'index ixB, je pense que l'index ixA est inutile.
En effet, si j'ai une requête dont la clause WHERE ne porte que sur "a", à priori, que j'utilise le premier noeud de ixB ou l'index ixA me semble totalement équivalent.
Seulement, je n'ai jamais pu le lire noir sur blanc dans une documentation, et les optitimisations liées aux index sont trop "aléatoires" pour pouvoir être mesurées avec précision sur une base de test (les index ne sont pas actifs immédiatement, une fois que le plan est connu et les résultats en cache, le vitesse ne dépend plus de la structure de la base, etc.)
Alors... Est-ce que quelqu'un pourrait confirmer ce point ?
En effet, j'ai, dans une base SQL Server, environ 20 index. C'est une table qui comporte plusieurs millions de lignes, et il est dont indispensable que les index soient les plus performants possibles.
Cependant, on fait des requêtes dans cette base de données via des bases Access, qui passent par des tables liées. Hors, pour une raison inconnue, si on a trop d'index, ça ne fonctionne pas !
Vu que certains index tels que ixA et ixB semblent faire doublon, je compte les fusionner, afin de créer de nouveaux index qui sont nécessaires à de nouveaux développements.
Merci d'éclairer ma lanterne !