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

Sélectionnez l'ordre d'évaluation de la clause where

Il n'y a aucune garantie pour la commande d'évaluation. L'optimiseur essaiera de trouver le moyen le plus efficace d'exécuter la requête, en utilisant les informations disponibles.

Dans votre cas, puisque c est indexé et que d ne l'est pas, l'optimiseur doit examiner l'index pour trouver toutes les lignes qui correspondent au prédicat sur c, puis récupérer ces lignes à partir des données de la table pour évaluer le prédicat sur d.

Cependant, s'il détermine que l'index sur c n'est pas très sélectif (bien que ce ne soit pas le cas dans votre exemple, une colonne gender est rarement utilement indexée), il peut décider de faire quand même le scan de la table.

Pour déterminer l'ordre d'exécution, vous devez obtenir un plan d'explication de votre requête. Cependant, sachez que ce plan peut changer en fonction de ce que l'optimiseur pense être la meilleure requête en ce moment.