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

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Points : 80
    Points
    80
    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 éclairé
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Points : 776
    Points
    776
    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.
    Avant de poster : FAQ, tutos, rechercher, google, ... Après :
    Merci

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    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
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

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

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    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
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    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
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

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