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 :

Jointure avec JOIN


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 178
    Par défaut Jointure avec JOIN
    Bonjour,

    Je dispose d'une requête SELECT assez lourde avec plusieurs jointures internes et quelques jointures externes
    Mes jointures internes sont faites avec un =
    Mes jointures externes sont faites avec un (+)

    Je me posais la question de savoir si avec des JOIN, cela ne serait pas plus rapide, mais dans tous les tutos que j'ai pu voir les jointures se font dans la clause FROM et non pas WHERE, et là j'ai un peu de mal à comprendre.

    Premièrement : Les JOIN peuvent-ils accélérer le traitement de la requête ?
    Deuxièmement : Comment les écrires dans la requête ?

    Cordialement,
    Nico

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Je me posais la question de savoir si avec des JOIN, cela ne serait pas plus rapide,
    Pour Oracle, utiliser le mot clé JOIN ou le = dans la clause WHERE ne change rien (JOIN est un standard SQL, c'est tout).

    Mais dans tous les tutos que j'ai pu voir les jointures se font dans la clause FROM et non pas WHERE, et là j'ai un peu de mal à comprendre.
    C'est simplement parce qu'ils utilisent la syntaxe du SQL standard.

    Les JOIN peuvent-ils accélérer le traitement de la requête ?
    Je ne crois pas.
    Comment les écrires dans la requête ?
    Comme vous voulez ...

  3. #3
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Citation Envoyé par pifor
    Pour Oracle, utiliser le mot clé JOIN ou le = dans la clause WHERE ne change rien (JOIN est un standard SQL, c'est tout).
    Tu as déjà vérifier ? Parce que j'ai le sentiment que pour les grosses requêtes ça permet à Oracle de moins permuter pour trouver le bon explain plan et donc parser plus rapidement... du moins, ça me semblerait logique

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Citation Envoyé par Fred_D
    Tu as déjà vérifier ? Parce que j'ai le sentiment que pour les grosses requêtes ça permet à Oracle de moins permuter pour trouver le bon explain plan et donc parser plus rapidement... du moins, ça me semblerait logique
    J'ai migré une application d'une v7 à la v9i avec des jointures entre une tables > 10 000 000 lignes avec une table >1 000 000 lignes ; ayant lu sur dvp que le moteur de base de données ferait un produit cartésien avec l'ancienne syntaxe de la jointure, j'étais très inquiet quant à la quantité de travail à faire pour changer toutes les requêtes, mais lors des tests je n'ai noté aucune différence de performance (au niveau humain, pas à la ms) entre l'ancienne syntaxe et la nouvelle (que je privilégie, néanmoins, ne serait-ce que pour la lisibilité, et le futur (surtout pour les jointures externes)).

  5. #5
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    OK merci pour l'info

    En fait, c'est plus la complexité de la requête que la volumétrie qui importe pendant la phase de parsing, mais le retour est intéressant

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Fred, non je n'ai pas personnellement vérifié mais si Tom Kyte le dit, c'est très probablement vrai. Voir

    http://asktom.oracle.com/pls/ask/f?p...13430766143199

    D'ailleurs Tom Kyte semble nettement contre l'utilisation du "JOIN naturel"
    (évitons les jeux de mots facile ? )

Discussions similaires

  1. Est-ce qu'une jointure avec JOIN est plus rapide que via le WHERE ?
    Par clavier12AZQSWX dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 13/01/2014, 16h31
  2. [8i] Jointures avec JOIN
    Par od.ps dans le forum Oracle
    Réponses: 2
    Dernier message: 19/06/2013, 19h31
  3. probleme de jointure avec left join
    Par carmen256 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 02/09/2010, 12h57
  4. [Sondage] Jointures dans WHERE ou avec JOIN ?
    Par Rei Angelus dans le forum Langage SQL
    Réponses: 29
    Dernier message: 25/08/2006, 10h17
  5. Problème de jointure avec INNER JOIN et LEFT OUTER JOIN
    Par tonio-lille dans le forum Langage SQL
    Réponses: 4
    Dernier message: 10/02/2006, 12h45

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