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

Oracle :index multicolonne unique ou deux index à colonne unique

Ç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 .