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

SQL Oracle Discussion :

mode choose inefficace


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2009
    Messages : 107
    Par défaut mode choose inefficace
    Bonjour,

    J'ai une requête du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table1 a, table2 b where a.cle=b.cle and b.champ2='CLE-CHAMP2'
    J'ai comme caractéristiques :
    • table 1 et table 2 possèdent un index sur cle.

    • table 1 a des stats a jour.

    • table 2 n'a pas de stats ni d'histogrammes car c'est une table très volatile.

    • table1 est une table volumineuse

    • b.champ2='CLE_CHAMP2' peut renvoyer un faible volume ou un important volume de données

    Comme il n'y a pas d'histogrammes sur table2, oracle est incapable de mesurer la sélectivité de b.champ2='CLE_CHAMP2'. De ce fait il fait un full scan systématiquement sur table 1 mais si la sélectivité est très grande.
    Si je calcule les histogrammes, ceux-ci sont très rapidement obsolètes car la table est très volatile. Je voudrais éviter d'avoir à calculer les histogrammes systématiquement avant d'exécuter la requête. Oracle 10g fait de l'échantillonnage dynamique mais je suis en oracle 9. Est ce quelqu'un a une idee pour que l'index de la table 1 soit utilisé quand la sélectivité est grande ?

  2. #2
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    A partir d'Oracle 9.2, tu as le dynamic sampling : le CBO peut chercher des échantillons à la volée pour estimer la sélectivité.

    Deux possibilités :
    - Paramètre OPTIMIZER_DYNAMIC_SAMPLING
    - Hint /*+ DYNAMIC_SAMPLING([@queryblock] [<tablespec>] <integer>) */

    [EDIT]
    Un petit article de l'oncle Tom pour expliquer les détails :
    http://www.oracle.com/technology/ora...o19asktom.html

  3. #3
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2009
    Messages : 107
    Par défaut level10
    Ok, merci beaucoup, je croyais que le paramètre n'était dispo qu'à partir de la 10g.
    J'ai mis le level à 8 car en-dessous le résultat n'est pas satisfaisant ( 2 ca ne marche pas car la colonne est indexé, 3 et 4 ne donnent pas des résultats satisfaisants mais je ne comprends pas à quoi correspondent ces niveaux ?!)

    enfin merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Le grand mode d'emploi du forum, à lire si vous souhaitez tout savoir !
    Par Anomaly dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 03/06/2013, 18h36
  2. Mode RULE et CHOOSE.
    Par genio dans le forum Administration
    Réponses: 14
    Dernier message: 21/05/2008, 13h22
  3. Réponses: 3
    Dernier message: 15/02/2008, 12h05
  4. Réponses: 17
    Dernier message: 17/10/2002, 21h06
  5. Passer en mode 800*600
    Par flavien tetart dans le forum Assembleur
    Réponses: 8
    Dernier message: 31/05/2002, 00h05

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