Ça dépend...
Il est peu probable qu'un index sur column1
uniquement sera bénéfique si vous avez déjà un index composite sur column1, column2
. Depuis column1
est l'index principal, les requêtes sur la table qui n'ont que column1
comme prédicat pourra utiliser l'index composite. Si vous exécutez fréquemment des requêtes nécessitant une analyse complète de l'index et la présence de column2
augmente considérablement la taille de l'index, il est possible qu'un index sur column1
uniquement serait plus efficace car l'analyse complète de l'index nécessiterait moins d'E/S. Mais c'est une situation assez inhabituelle.
Un index sur column2
uniquement peut être bénéfique si certaines de vos requêtes sur la table spécifient des prédicats uniquement sur column2
. S'il y a relativement peu de valeurs distinctes de column1
, il est possible qu'Oracle effectue une analyse par saut d'index à l'aide de l'index composite pour satisfaire les requêtes qui spécifient uniquement column2
comme prédicat. Mais une analyse par saut est susceptible d'être beaucoup moins efficace qu'une analyse par plage, il est donc raisonnablement probable qu'un index sur column2
serait bénéfique pour ces requêtes. S'il existe un grand nombre de valeurs distinctes pour column1
, le saut d'analyse serait encore moins efficace et un index uniquement sur column2
serait plus avantageux. Bien sûr, si vous n'interrogez jamais la table en utilisant column2
sans spécifier également un prédicat sur column1
, vous n'auriez pas besoin d'un index uniquement sur column2
.