INNER JOIN

INNER JOIN - SQL/NoSQL - Programmation

Marsh Posté le 19-11-2003 à 10:20:06    

Qu'elle est l'utilité des inner join si on peut faire les jointures dans la clauses where ?
 
Pour des jointures assez complexes, les inner join sont meilleurs pour les SGBD (temps d'execution) ?
 
Et des INNER Join imbriqué les uns dans les autres, cela n'a aucune utilité pour de l'optimisation ? Cela revient au même que si on les met les un en dessous des autres ?


Message édité par Shogun2002 le 19-11-2003 à 10:22:49
Reply

Marsh Posté le 19-11-2003 à 10:20:06   

Reply

Marsh Posté le 19-11-2003 à 10:23:37    

Sinon vous preferez utiliser les INNER JOIN ou les jointures dans la clauses Where ?

Reply

Marsh Posté le 19-11-2003 à 10:34:47    

Je cite
(http://sqlpro.developpez.com/SQL_AZ_3.html#JOIN_where_from)
 
"UN CONSEIL IMPORTANT  
Dans la mesure du possible, utilisez toujours un opérateur de jointure normalisé  (mot clef JOIN).  
 
En effet :  
 
les jointures faites dans la clause WHERE (ancienne syntaxe de 1986 !) ne permettent pas de faire la distinction de prime abord entre ce qui relève du filtrage et ce qui relève de la jointure.  
Il est à priori absurde de vouloir filtrer dans le WHERE (ce qui restreint les données du résultat) et de voiloir "élargir" ce résultat par une jointure dans la même clause WHERE de filtrage.  
La lisibilité des requêtes est plus grande en utilisant la syntaxe à base de JOIN, en isolant ce qui est du filtrage et de la jointure, mais aussi en isolant avec clarté chaque condition de jointures entre chaque couples de table  
L'optimisation d'exécution de la requête est souvent plus pointue du fait de l'utilisation du JOIN.  
Lorsque l'on utilise l'ancienne syntaxe et que l'on supprime la clause WHERE a des fins de tests, le moteur SQL réalise le produit cartésiens des tables ce qui revient la plupart du temps à mettre à genoux le serveur ! "
 
 

Reply

Marsh Posté le 19-11-2003 à 10:39:05    

Ok

Reply

Marsh Posté le 19-11-2003 à 10:40:33    

Les jointures par WHERE sont dépassées. La norme SQL ANSI-92 recommande l'utilisation d'INNER JOIN.
Le problème avec la clause WHERE c'est qu'elle est exécutée une fois que le recordset est construit en mémoire. Chaque ligne doit être vérifiée pour voir si le WHERE est vrai ou faux. S'il est vrai, la ligne est conservée, sinon la ligne est supprimée.
La clause INNER JOIN est utilisée pendant la création du recordset, ce qui veut dire que le recordset est plus petit car seules les lignes concernées y sont incluses. La vitesse en est grandement améliorée.
 
INNER JOIN rulez !

Reply

Marsh Posté le 19-11-2003 à 10:42:59    

Sinon des inner join imbriqué les uns dans les autres, cela n'a aucune utilité ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed