Problème choix syntaxe jointure
4 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
- filidanril
- Nouveau WRInaute
- Messages: 2
- Inscription: Lun Déc 06, 2004 19:25
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
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
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.
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.
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
)
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
- Messages: 2
- Inscription: Lun Déc 06, 2004 19:25
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!
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!
4 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Google Code Search : moteur de recherche de codes sources
- Sortie d'un nouveau livre sur Google
- Article sur le fichier .htaccess
- Comment éviter les contenus dupliqués (avec/sans le www)
- Recherche de backlinks : différence entre site: et link:
- Yahoo déclare-t-il la guerre aux référenceurs ?
- Google Code Jam 2003
- Keyword Search Engine : le choix des bons mots-clés
- Référencement d'un forum phpBB
- Des interfaces de recherches spéciales sur Google
- problème de jointure de table avec SUM et GROUP BY
- problème de jointure mysql : je m'en sors pas !!
- probleme de syntaxe
- PROBLEME SYNTAXE SQL
- Probleme de syntaxe rewriting
- redirection 301 : problème de syntaxe
- Problème de syntaxe .htaccess et RewriteRule
- probleme de syntaxe sur un fichier htacess
- [Résolu]Problème de syntaxe pour une RewriteRule
- Problème de syntaxe dans ma redirection 301 htaccess ?
- Probleme de choix de variable
- [?] espotting vs overture => probleme de choix
- jointure
- SQL, Jointure
- jointure mysql
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités




le forum