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

PL/SQL Oracle Discussion :

Jointures MERGE - NESTD LOOP - HASH


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Par défaut Jointures MERGE - NESTD LOOP - HASH
    Bonjour à tous ,

    dans quel cas de figure une jointure de type MERGE est plus performante qu'une NESTD LOOP ou une Jointure HASH ( comparaisons des différentes méthodes)

    Cordialement.

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    NESTED_LOOP si peu de données dans la table interne (la table conduite).
    HASH JOIN si les deux tables sont volumineuses.
    MERGE JOIN si les données sont déjà triées.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Par défaut si plusieurs tables
    Merci pour votre réponse :

    sachant qu'on peut utiliser des HINT pour forcer oracle à utiliser une autre méthode de jointure que celle proposée par l'optimiseur, ma question est de savoir, dans le cas d'une jointure sur plusieurs tables, sur quelle base on choisi une méthode et non pas une autre.

    Cordialement.

  4. #4
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par bar_79 Voir le message
    Merci pour votre réponse :

    sachant qu'on peut utiliser des HINT pour forcer oracle à utiliser une autre méthode de jointure que celle proposée par l'optimiseur, ma question est de savoir, dans le cas d'une jointure sur plusieurs tables, sur quelle base on choisi une méthode et non pas une autre.

    Cordialement.
    N'utilisez jamais les Hints pour le version production. Assurez-vous que les statistiques disponible pour l'optimiseur correctes. En cas de problèmes essayez de comprendre que est-ce que va mal. En gros les problèmes vient des:
    • distributions non uniformes des données et manque des histogrammes
    • problèmes de peek binding surtout en présence des histogrammes
    • statistics obsolétes, valeurs min, max
    • corrélations entres les valeurs des colonnes d'une même table
    • erreurs dans l'aproximation des cardinalitès

  5. #5
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Par défaut vérification des statistiques
    Merci pour ces détails

    L'utilisation des Hint parfois permet de résoudre d'importants soucis de perf, pour un cas bien particulier j'ai forcé oracle à faire une jointure de type HASH à la place d'une NEST LOOP proposée par l'optimiseur (le temps de traitement est passé de 25 heures à 1heure 3minutes), en plus, avec le NEST LOOP la requête se plante à chaque lancement.

    Pour votre réponse, concernant les statistiques, comment je pourrai tester la qualité de ces statistiques pour éviter d'utiliser les Hint et de laisser oracle choisir un meilleur plan d'exécution.

    Cordialement.

  6. #6
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611

Discussions similaires

  1. Jointure : Merge ou Set
    Par zellinho dans le forum SAS Base
    Réponses: 5
    Dernier message: 13/06/2013, 17h08
  2. Entities et inner HASH-MERGE join
    Par new.proger dans le forum Linq
    Réponses: 1
    Dernier message: 26/12/2009, 13h44
  3. dans quel cas une jointure nested loops est meilleur que hash join?
    Par M_Dandouna dans le forum Administration
    Réponses: 5
    Dernier message: 08/09/2009, 15h46
  4. Réponses: 8
    Dernier message: 02/07/2009, 11h39
  5. Différence entre Nested LOOP et Hash Join
    Par farenheiit dans le forum Administration
    Réponses: 24
    Dernier message: 25/03/2009, 10h01

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