2010-07-27 5 views
1

Si je soumets une requête à SQL Server 2005 contenant un certain nombre de clauses LEFT JOIN auxquelles la table jointe n'est alors jamais référencée, les jointures se produiront-elles encore ou SQL Server est-il assez intelligent pour les supprimer?SQL Server supprime-t-il automatiquement les jointures inutiles?

De toute évidence, il ne serait pas en mesure de rejeter INNER JOINs [fausse hypothèse! voir les réponses] car cela pourrait potentiellement changer le résultat, mais peut-il le faire pour les JOINs GAUCHE?

Répondre

3

Une jointure à gauche pourrait potentiellement multiplier votre jeu de résultats s'il y a beaucoup de correspondances.

Donc, il serait encore évalué.

+0

Bien sûr; Je n'y ai pas pensé, merci. Si j'ajoute un DISTINCT - qui n'est peut-être pas si mauvais que je ne sélectionne que la clé primaire d'une table - est-ce que cela optimiserait la sortie de la gauche? – kasey

+0

Le moyen le plus simple de le savoir est de l'essayer. Regardez le plan d'exécution avec et sans vos jointures. –

+1

Merci pour le conseil; ressemble à dans mon cas particulier, même sans DISTINCT, SQL Server est capable d'optimiser toutes les jointures à gauche indésirables. Je suppose qu'il est capable de déduire qu'il n'y aura jamais plusieurs correspondances par jointure à partir de contraintes existantes et d'index uniques sur les tables. – kasey

4

peut de supprimer tous les deux INNER et LEFT JOINs en inspectant les contraintes. Si vous n'utilisez pas de colonne dans la table et que la contrainte d'existence d'une seule ligne est garantie par (FK), la table n'a pas besoin d'être utilisée. Évidemment, cela dépend de la requête, il est possible que la table soit toujours utilisée car c'est le meilleur plan.

Ceci est encore une autre raison pour laquelle les contraintes sont tremendously useful and should be considered more frequently qu'elles ne le sont souvent dans les conceptions.

+0

Merci pour la perspicacité, j'ai édité la question pour souligner ma fausse hypothèse pour les futurs lecteurs. – kasey

Questions connexes