IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

requête avec inner join ?


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Par défaut requête avec inner join ?
    salut,

    Je voudrais savoir quelle est l'interet d'utilisé inner join lorsque l'on fait une requetes ?

    Quelle difference existe t il entre ces 2 requêtes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select nom,prenom,ville from personne inner join ville on personne.codeville=ville.codeville;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select nom,prenom,ville from personne , ville where personne.codeville=ville.codeville;
    Existe t il une difference au niveau des performances ?

    Merci.

  2. #2
    Membre émérite
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Par défaut
    Plus rapide avec un INNER JOIN. Cet outil est conçu spécifiquement pour joindre des tables ou des vues donc plus rapide que le SELECT.

  3. #3
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    Non pas d'accord, absolument AUCUNE différences de performances !

    même plan d'exécution, même nombre de blocs lu, etc...

    juste une différence de syntaxe entre une syntaxe SQL "normée" et une syntaxe SQL "Oracle"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select 
            R.Requester_i
            , P.GenericName 
    From    Requester R
            , Person P 
    Where   R.Person_i = P.Person_i
    Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop

    SELECT STATEMENT Optimizer Mode=CHOOSE 28 K 106
    HASH JOIN 28 K 938 K 106
    TABLE ACCESS FULL ASYLUM_3_0.REQUESTER 28 K 276 K 38
    TABLE ACCESS FULL ASYLUM_3_0.PERSON 38 K 899 K 50
    est identique à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Select 
            R.Requester_i
            , P.GenericName 
    From    Requester R
            inner join
            Person P
            on R.Person_i = P.Person_i
    Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop

    SELECT STATEMENT Optimizer Mode=CHOOSE 28 K 106
    HASH JOIN 28 K 938 K 106
    TABLE ACCESS FULL ASYLUM_3_0.REQUESTER 28 K 276 K 38
    TABLE ACCESS FULL ASYLUM_3_0.PERSON 38 K 899 K 50

  4. #4
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Par défaut
    et un inner join sur plusieur table c'est possible ?

  5. #5
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    Bien sûr !
    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Select 
            R.Requester_i 
            , P.GenericName 
    From    Requester R 
            inner join 
            Person P 
                on R.Person_i = P.Person_i
            inner join
            SocialGroupMember SGM
                on R.Requester_i = SGM.Requester_i
            inner join
            SocialGroup SG
                on SGM.SocialGroup_i = SG.SocialGroup_i
    Where   SG.T_SocialGroup_i = 447
    And     SGM.DateTo is Null

  6. #6
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    Mais je RE-précise que c'est STRICTEMENT identique en terme de plan d'exécution et de performances que ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Select 
            R.Requester_i 
            , P.GenericName 
    From    Requester R 
            ,Person P 
            ,SocialGroupMember SGM 
            ,SocialGroup SG 
    Where   R.Person_i = P.Person_i
    And     R.Requester_i = SGM.Requester_i
    And     SGM.SocialGroup_i = SG.SocialGroup_i
    And     SG.T_SocialGroup_i = 447 
    And     SGM.DateTo is Null

Discussions similaires

  1. Requête update avec inner join
    Par mattmax dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 23/05/2013, 14h53
  2. [HQL] Requête avec inner join
    Par Malatok dans le forum Hibernate
    Réponses: 8
    Dernier message: 03/10/2011, 17h52
  3. Ma requête avec INNER JOIN
    Par vocal94130 dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/08/2010, 09h23
  4. [MySQL] Requête avec inner join
    Par kate59 dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 19/02/2008, 17h28
  5. [Access] Problème dans une requête SQL avec INNER JOIN ?
    Par bds2006 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/06/2006, 10h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo