|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre du Club
![]() Aurélien LEQUOY Inscription : février 2011 Messages : 63 ![]() |
Voilà, je cherche des "preuves" ? Il paraitrait que la requête suivante de ce type :
Code :
Code :
Pour moi c'est qu'une question d'écriture et strictement identique au niveau du plan d'exécution, mais certains collègues pensent le contraire (prêt en débattre avec les mains lol). Donc si qqn d'entre vous avez déjà eu un cas ou la première requête serait plus performante que la 2eme n'hésiter pas à nous donner un exemple. |
||||
|
|
00
|
|
|
#2 |
![]() ![]() |
Il n'y a strictement aucune difference de performance. Les deux formes sont équivalentes.
Tu peux le vérifier en regardant le plan des deux forme (set showplan on) Pour moi, la forme ANSI (avec JOIN ... ON ...) est à préférer parce que plus expressive, et plus correcte lorsque l'on utilise des OUTER join. Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
|
|
00
|
|
|
#3 |
![]() ![]() |
Beaucoups de collègues sont réticents à utiliser la forme ANSI par un manque d'habitude. J'ai aussi eu de la peine au début, mais après quelque temps je ne fais plus que cela, aussi parce qu'une jointure complexe (10+ tables) devient illisible dans l'ancien format, alors qu'en mode ANSI on peut bien suivre quelle table joint avec quelle autre.
Michael (qui code en T-SQL depuis 1989...)
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Aurélien LEQUOY Inscription : février 2011 Messages : 63 ![]() |
Cela confirme bien ce que je pensais ! merci
|
|
|
00
|
|
|
#5 | |
![]() ![]() Arnaud FeltzDéveloppeur .NET Inscription : août 2005 Messages : 5 188 ![]() |
Citation:
Je me mets petit à petit à la norme mais c'est vrai que c'est pas évident au premier abord Sinon +1 pour tout ce qu'a dit Michael, les requêtes sont strictement identiques. Arnaud (qui code en T-SQL depuis 2008
__________________
C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère Installation de Code::Blocks sous Debian à partir de Nightly Builds
|
|
|
00
|
|
|
#6 | ||||||
![]() ![]() |
Je conseil très fortement d'adopter la forme ANSI.
P.ex. query pour extraire les colonnes/types pour une table, en mode "ancien": Code :
Code :
Les jointures ANSI permettent aussi de faire des jointures imbriquées, et en mode developpement/debugging c'est trivial de commenter un partie de la jointure pour comprendre des jointures qui ne ramènent pas ce qui est escompté: Code :
Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
||||||
|
|
10
|
|
|
#7 |
![]() ![]() |
Je plusoie avec un bémol.
En inner join, sous Sybase ASE, les formes sont identiques. Il n'est est rien en ce qui concerne, si je ne m'abuse, l'OUTER JOIN lorsque l'on conditionne sur la table externe. Je crois me souvenir que le comportement de l'ASE en version *= n'est pas similaire à la norme, mais que le comportement est correct via l'OUTER JOIN. Une raison de plus pour utiliser la jointure ANSI qui a le mérite de dissocier clairement conditions de jointures et conditions fonctionnelles.
__________________
Sr DBA Oracle / Sybase / MS-SQL / MySQL / DB2 / Postgresql / Informix Administrateur SAP Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums ! |
|
00
|
Copyright © 2000-2013 - www.developpez.com