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?
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
Le moyen le plus simple de le savoir est de l'essayer. Regardez le plan d'exécution avec et sans vos jointures. –
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