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 :

EXPLAIN et index jamais utilisés


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Par défaut EXPLAIN et index jamais utilisés
    Bonjour,

    Je suis en train de me familiariser avec le EXPLAIN d'Oracle, il y a une chose que je ne comprends pas (j'essaierai de fournir un exemple si besoin) : lorsque je crée 2 tables et que je les joints sur des colonnes indexées, le plan d'exécution indique un FULL quoi qu'il arrive. J'ai d'ailleurs l'impression qu'Oracle choisis "son" chemin systématiquement en faisant fi des index créés sur mes tables. Ce qui me fait plus peur, c'est que je suis en train de reprendre une base préexistante, lorsque je regarde les plans d'exécution sur la quasi-totalité des tables que je suis en train de découvrir, l'EXPLAIN indique une utilisation quasi-nulle des index.

    Je sais que le sujet est vaste mais je cherche un point d'accroche pour essayer de comprendre le mécanisme.

    En vous remerciant,

  2. #2
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Bonjour,

    Plusieurs réponses/pistes :
    1- quel est le volume de données ? ( si tes tables sont petites, Oracle ira plus vite en chargeant tout et il n'y a pas de raisons d'utiliser les index)
    2- sur tes index, les stats ont elles été calculées?
    3- dans tes jointures , tu utilises bien des "=","<=",">=" et pas des "!=", "<",">" ?
    4- Quel est le mode de l'optimizer ? (= la méthode de définition des plans par Oracle) : SELECT VALUE FROM v$parameter WHERE NAME = 'optimizer_mode'

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Par défaut
    Bonjour et merci de la réponse, je mets mes réponses en suite des questions

    Citation Envoyé par miloux32 Voir le message
    Bonjour,

    Plusieurs réponses/pistes :
    1- quel est le volume de données ? ( si tes tables sont petites, Oracle ira plus vite en chargeant tout et il n'y a pas de raisons d'utiliser les index)


    Il y a de petites tables effectivement (< 100 lignes) donc là ça ne me choque pas, par contre il y également des croisements entre tables de plusieurs millions de lignes sur les PK.
    2- sur tes index, les stats ont elles été calculées?

    C'est-à-dire si "EXEC DBMS_STATS.gather_table_stats('USEREX', 'T1');" a été lancée ? J'ai lu quelques articles sur le sujet car je ne connaissais pas Oracle avant ces dernières semaines, mais je n'ai pas les privilèges nécessaires pour farfouiller et "jouer" avec, je ne sais d'ailleurs pas où aller regarder pour le déterminer.

    3- dans tes jointures , tu utilises bien des "=","<=",">=" et pas des "!=", "<",">" ?

    Oui pas de souci

    4- Quel est le mode de l'optimizer ? (= la méthode de définition des plans par Oracle) : SELECT VALUE FROM v$parameter WHERE NAME = 'optimizer_mode'
    Je n'ai pas les privilèges nécessaires pour exécuter la commande, désolé

    J'ai lu également que d'activer auto-trace est utile, il m'est impossible de le faire avec mon niveau de privilèges.

  4. #4
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Il faudrait voir le plan d'exécution avec les stats d'exécution
    Méthode: http://www.dbi-services.com/index.ph...execution-plan
    et on verra si le choix de l'optimiseur est justifié ou non.
    Cordialement,
    Franck.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Par défaut
    Bonjour,

    Je viens de répondre au sujet que j'ai ouvert sur la partie ADMIN où vous me communiquez également la manière d'obtenir les stats, je n'ai malheureusement pas dans l'immédiat de droit de lecture sur V$SESSION. Je vais essayer d'obtenir ces droits et donnerai suite au message lorsque (ou plutôt si) ils sont accordés.

    Merci à vous,

Discussions similaires

  1. Impact de suppresion des index faiblement Utilisés
    Par joujousagem2006 dans le forum Administration
    Réponses: 6
    Dernier message: 28/01/2014, 14h38
  2. Réponses: 6
    Dernier message: 20/05/2009, 09h35
  3. Trouver les indexes utilisés
    Par stegaud dans le forum Administration
    Réponses: 3
    Dernier message: 03/05/2007, 13h45
  4. Fragmentation d'Index jamais inferieur a 50 % ?
    Par Bronks dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 16/03/2007, 09h14
  5. [MYSQL] index non utilisés
    Par LE NEINDRE dans le forum Requêtes
    Réponses: 10
    Dernier message: 27/10/2005, 15h39

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