Problème choix syntaxe jointure

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par filidanril, 4 Août 2008.

  1. filidanril
    filidanril Nouveau WRInaute
    Inscrit:
    6 Décembre 2004
    Messages:
    2
    J'aime reçus:
    0
    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
     
  2. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    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.
     
  3. sureau
    sureau WRInaute discret
    Inscrit:
    7 Mars 2005
    Messages:
    157
    J'aime reçus:
    0
    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 :) )
     
  4. filidanril
    filidanril Nouveau WRInaute
    Inscrit:
    6 Décembre 2004
    Messages:
    2
    J'aime reçus:
    0
    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!
     
Chargement...
Similar Threads - Problème choix syntaxe Forum Date
Probleme Choix de toutes les regions si pas de sessions cookies Développement d'un site Web ou d'une appli mobile 28 Décembre 2008
[?] espotting vs overture => probleme de choix Débuter en référencement 15 Août 2005
Problèmes Données structurées Crawl et indexation Google, sitemaps Dimanche à 09:07
problème avec mon site Demandes d'avis et de conseils sur vos sites 28 Novembre 2022
Probleme tag sur Google tag manager Demandes d'avis et de conseils sur vos sites 24 Novembre 2022
Probleme Tag sur Google Tag Manager Google Analytics 18 Novembre 2022
Gros problème sur la profondeur de mes pages Problèmes de référencement spécifiques à vos sites 30 Septembre 2022
Problème de htaccess chez Ionos URL Rewriting et .htaccess 12 Septembre 2022
Problème sur jquery avec fonction asynchrone Développement d'un site Web ou d'une appli mobile 6 Septembre 2022
Problème de crawl et d'indexation Crawl et indexation Google, sitemaps 1 Septembre 2022
WordPress Problème affichage style avec Elementor (titre, bordures, separateur) Administration d'un site Web 8 Août 2022
Problème d'indexation de backlinks Débuter en référencement 24 Juillet 2022
Problème d'indexation de backlinks Problèmes de référencement spécifiques à vos sites 21 Juillet 2022
Probleme de visibilité de ma page Facebook Facebook 5 Juillet 2022
problème avec le développeur Droit du web (juridique, fiscalité...) 22 Juin 2022
Problème désindexation des pages de Google Débuter en référencement 21 Juin 2022
Problème d'indexation de pages sur Google Problèmes de référencement spécifiques à vos sites 31 Mai 2022
problème de redirection non souhaitée Administration d'un site Web 28 Avril 2022
Problème d'indexation Produits Prestashop Crawl et indexation Google, sitemaps 28 Avril 2022
Problème d'affichage des campagnes Google Ads dans un tableau de bord Data Studio AdWords 26 Avril 2022