| |
Savez-vous bien utiliser les outils de mesure d'audience ? Effectuez-vous un calcul de ROI (Retour sur investissement) pour savoir comment améliorer vos campagnes emarketing ? Savez-vous utiliser les bons outils pour booster votre taux de transformation ? La formation Web Analytics de Ranking Metrics, présentée par un expert reconnu officiellement par Google Analytics, vous apportera les réponses à toutes vos questions ! ===> Informations et inscriptions.
|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
filidanril Nouveau WRInaute
Inscrit le: 06 Déc 2004 Messages: 2
|
Posté le : Lun Aoû 04, 2008 11:07 Sujet du message: Problème choix syntaxe jointure |
|
|
Bonjour,
j'ai créée une bdd de protéines qui contient notamment ces 5 tables :
- protein (id, subfamily_idSF, Name)
- subfamily (idSf, Family_idF, Name)
- family(idF, Class_idC, Name)
- class (idC, superclass_idSC, name)
- sueprclass (idSC, name)
J'aimerai sortir toutes les proteines qui appartiennent à la superclasse qui a l'id=1.
J'ai écris une requête avec join :
SELECT TF.ID
FROM subfamily SF
LEFT JOIN transcriptionfactor TF ON SF.idSF = TF.Subfamily_idSF LEFT JOIN family F ON F.idF = SF.Family_idF
LEFT JOIN class C ON C.idC= F.Class_idC
LEFT JOIN superclass SC ON SC.idSC = C.Superclass_idSC
WHERE SC.idSC=1
et une requête de cette sorte :
SELECT TF.ID FROM transcriptionfactor TF, subfamily SF, family F, class C, superclass SC
WHERE SF.idSF = TF.Subfamily_idSF
AND F.idF = SF.Family_idF
AND C.idC= F.Class_idC
AND SC.idSC = C.Superclass_idSC
AND SC.idSC=1
Elles marchent toutes les deux mais je ne sais quelle écriture conservée. En effet, la bdd est beaucoup plus grosse et j'ai de très nombreuses requêtes a effectuées et je n'arrive pas à savoir laquelle de ces écritures est la plus rapide et la plus formelle.
Laquelle me conseillez-vous?
Merci d'avance |
|
| |
|
 |
jcaron WRInaute passionné

Inscrit le: 13 Fév 2004 Messages: 521 Localisation: Paris
|
Posté le : Lun Aoû 04, 2008 12:03 Sujet du message: Problème choix syntaxe jointure |
|
|
Attention: formellement, les deux notations ne veulent pas dire la même chose (mais il est possible que le résultat soit le même dans ton cas particulier). Elles voudraient dire la même chose si tu utilisais des JOINs "normaux" (JOIN tout court ou INNER JOIN).
Si tu fais ce changement, en pratique c'est exactement la même chose. La notation avec les JOINs est théoriquement plus formelle et certains la trouvent plus lisible, mais en pratique c'est pareil.
Si par contre tu tiens à ce que ce soit un LEFT JOIN alors comme elles ne sont pas équivalentes, tu n'as pas le choix entre les deux
Jacques. |
|
| |
|
 |
sureau WRInaute occasionnel

Inscrit le: 07 Mar 2005 Messages: 191 Localisation: annecy
|
Posté le : Lun Aoû 04, 2008 13:09 Sujet du message: Problème choix syntaxe jointure |
|
|
De plus en utilisant des inner join ou les jointures de ton second cas, tu n'auras pas du tout les mêmes résultats en terme de ressources.
Il vaut mieux utiliser les méthodes avec join :
- les jointures en where ne font pas de différence entre le filtrage et la jointure (lors de la jointures, tous les enregistrements sont récupérés et lus pour voir si ils rentrent dans le where, alors qu'avec le join, seuls ceux de la condition ON sont analysés)
- Meilleur lisibilité car on distingue facilement les filtres de chaque table
Si tu as beaucoup d'enregistements dans tes tables, une petite exécution des 2 requetes de donnera rapidement une réponse (souvent visible à l'oeil ) |
|
| |
|
 |
filidanril Nouveau WRInaute
Inscrit le: 06 Déc 2004 Messages: 2
|
Posté le : Lun Aoû 04, 2008 15:08 Sujet du message: Problème choix syntaxe jointure |
|
|
Oki merci beaucoup a vous deux.
En effet, je pensais que les deux syntaxes voulaient dire la même chose donc j'ai changé LEFT JOIN par INNER JOIN et je vais donc utiliser cette syntaxe.
Encore merci et bonne continuation! |
|
| |
|
 |
| |
|
|
|
|
A lire dans l'actualité sur WRI :
Autres sujets de discussion :
|
|