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

Quelle est l'importance de l'ordre des colonnes dans les index ?

Regardez un index comme celui-ci :

Cols
  1   2   3
-------------
|   | 1 |   |
| A |---|   |
|   | 2 |   |
|---|---|   |
|   |   |   |
|   | 1 | 9 |
| B |   |   |
|   |---|   |
|   | 2 |   |
|   |---|   |
|   | 3 |   |
|---|---|   |

Voyez comment restreindre d'abord A, car votre première colonne élimine plus de résultats que de restreindre d'abord votre deuxième colonne ? C'est plus facile si vous imaginez comment l'index doit être traversé, la colonne 1, puis la colonne 2, etc... vous voyez que couper la plupart des résultats lors de la première passe rend la 2ème étape beaucoup plus rapide.

Autre cas, si vous interrogez sur la colonne 3, l'optimiseur n'utilisera même pas l'index, car il n'est pas du tout utile pour réduire les ensembles de résultats. Chaque fois que vous êtes dans une requête, réduire le nombre de résultats à traiter avant l'étape suivante signifie de meilleures performances.

Étant donné que l'index est également stocké de cette manière, il n'y a pas de retour en arrière dans l'index pour trouver la première colonne lorsque vous l'interrogez.

En bref :non, ce n'est pas pour le spectacle, il y a de réels avantages en termes de performances.