2010-06-28 3 views
2

Envisagez les requêtes suivantes. Les plans d'exécution pour les deux requêtes sont identiques et s'exécutent en même temps. Mais, je m'attendais à ce que la deuxième requête ait un plan différent et s'exécute plus lentement car elle doit sélectionner toutes les données du contact et appliquer le filtre. On dirait que j'avais tort.L'ajout d'une requête interne ne modifie pas le plan d'exécution.

Je me demande comment cela se passe?

Database Server: SQL Server 2005

Répondre

6

La "requête Optimiseur" est ce qui se passe. Lorsque vous exécutez une requête, SQL Server utilise un optimiseur basé sur les coûts pour identifier ce qui est susceptible d'être le meilleur moyen de satisfaire cette requête (c'est-à-dire son plan d'exécution). Pensez-y comme une carte d'itinéraire de Place A à Place B. Il peut y avoir plusieurs façons d'aller de A à B, certaines seront plus rapides que d'autres. SQL Server planifie des itinéraires différents pour atteindre l'objectif final de renvoyer les données qui satisfont la requête et d'aller avec celui qui a un coût acceptable. Notez, il n'analyse pas nécessairement CHAQUE façon possible, car cela serait inutilement cher.

Dans votre cas, l'optimiseur a calculé que ces 2 requêtes peuvent être réduites à la même chose, donc vous obtenez le même plan.

Questions connexes