J'essaie de déterminer les performances d'un SQL généré dans SQL Server 2005.Les performances de SQL Server sont-elles croisées avec les conditions dans l'instruction where de la même manière que les jointures internes avec les conditions dans l'instruction on de la jointure?
Il utilise CROSS JOINS, mais les conditionnels liant les tables croisées sont dans l'instruction where.
J'ai précédemment pensé que toutes les jointures croisées qui ont des instructions où tirer d'abord le produit cartésien complet, puis appliquer le filtre. Toutefois, ce lien suivant sur MSDN suggère différemment.
http://msdn.microsoft.com/en-us/library/ms190690.aspx
Il précise que s'il y a une condition sur une table de croix rejoint, il « se comporter » comme une jointure interne. Il continue en montrant un exemple des résultats similaires d'une jointure interne et d'une jointure croisée w/où conditionnel.
Il ne précise pas ce que la différence de performance est cependant, seulement qu'ils se comportent d'une manière similaire.
J'ai entendu parler d'un plan d'explication. Est-ce la même chose qu'un plan d'exécution? – jetimms
drôle, je n'ai jamais entendu parler d'un plan d'exécution! Si vous utilisez SQL Server Management Studio, écrivez votre requête, faites un clic droit, puis faites 'show execution pkan' il décompose la requête en composants de traitement logique et vous montre où le temps/traitement est utilisé. Typiquement, je l'utilise pour déterminer quand les analyses de table se produisent sur les goulets d'étranglement de la requête apparaissent – mrwayne
J'ai techniquement SQL Server Manager, mais je fais tout dans l'outil de requête avancée (www.querytool.com). Cela permet quelque chose de semblable à un plan d'exécution (ou peut-être exactement la même chose.) Je n'ai pas encore tout à fait compris à quoi cela servait, mais avec votre recommandation et celle de Whish, je vais essayer. Merci! – jetimms