2015-09-11 3 views

Répondre

1

Afin d'utiliser votre index, vous devez utiliser comme ceci.

Index: Ix_threecols (C1, C2, C3)

1. select c1,c2,c3 from table where c1=val 
and c2=val and c3=val 
2. select c1,c2,c3 from table where c1=val 
and c2=val 
3. select c1,c2,c3 from table where c1=val 

Votre première colonne la plus à gauche de l'indice doit être utilisé dans la clause where. Veuillez ne pas utiliser (*) dans votre sélection, car cela peut mener à la recherche d'index.

Nous devons vérifier le plan d'exécution pour plus d'analyse à ce sujet.

+0

et si j'utilise où c1 = val ou c2 = val – gkarya42

+0

Vous pouvez utiliser comme ceci mais ce serait un index scan si vous utilisez 'ou' – StackUser

1

La réponse courte est non.

Si au moins la première colonne de l'index apparaît dans votre clause where, l'index peut être. Si sera est déjà utilisé par l'optimiseur, mais en supposant que vous n'avez aucun autre index sur les autres colonnes dans la clause where, il sera probablement utilisé.