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 :

Index et TRACE


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Par défaut Index et TRACE
    Bonjour,
    3 questions en une (car tout est lié)

    Table AAA
    Champs A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q
    Index1 = A
    Index2 = B,D
    Index3 = G,A
    Index4 = I,J,K

    J'ai un select suivant:
    Select * from AAA
    where index3 = trucmuche
    order by index1

    Ce select n'affiche rien il est utilisé ensuite pour alimenter une table temporaire.Le temps de traitement est trés long.
    Lorsque j'enlève l'ORDER BY le temps de traitement est divisé par 3...

    Question1:
    Est ce que un ORDER BY sur un INDEX différent de celui du SELECT est préconisé en matière de développement ?

    Question2:
    Quels TRACE peut-on faire sous ORACLE ?
    On m'a conseillé de faire un DBSLOG, mais le fichier de sorti est incompréhensible !

    Merci

  2. #2
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    1. on ne peut pas préciser le nom d'un index dans une clause where. Donnez des éléments réels et pas des éléments bidons !

    2. L'order by peut être couteux mais si l'ordre a vraiment un sens, vous n'avez pas le choix, faut le garder

    3. Pour tracer, le plus judicieux est l'explain plan :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SQL> explain plan for
     select ... FROM ... WHERE ... ORDER BY ...;
     
    SQL>select * from table ( dbms_xplan.display() );

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Par défaut
    Citation Envoyé par LeoAnderson
    1. on ne peut pas préciser le nom d'un index dans une clause where. Donnez des éléments réels et pas des éléments bidons !
    ERP avec une base ORACLE.
    Table ==> T_OA(Ordre Achat)
    index1 = numordre
    index4 = numcd(numero de commande) , numordre(numero ordre achat)
    V_numcd = variable avec numero de commande.


    SELECT T_OA.*
    FROM T_OA
    WHERE T_OA.index4 = :V_numcd
    ORDER BY T_OA.index1

  4. #4
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    Désolé mais je comprends pas bien, c'est vraiment écrit comme ça dans l'outil ?? dans ce cas ce n'est pas du SQL. Par exemple, index4 signifie-t-il un vrai index physique de la table ou est-ce juste une notation ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Par défaut
    Citation Envoyé par remi4444
    Désolé mais je comprends pas bien, c'est vraiment écrit comme ça dans l'outil ?? dans ce cas ce n'est pas du SQL. Par exemple, index4 signifie-t-il un vrai index physique de la table ou est-ce juste une notation ?
    Ce n'est pas du SQL pur jus, mais une "variante" à la sauce ERP.

  6. #6
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    Désolé alors mais si on a pas la vrai requête SQL générée au final, je pense pas qu'on puisse faire grand chose pour toi sur ce forum....

  7. #7
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    Citation Envoyé par philuciole
    Ce select n'affiche rien il est utilisé ensuite pour alimenter une table temporaire.Le temps de traitement est trés long.
    Lorsque j'enlève l'ORDER BY le temps de traitement est divisé par 3...
    Si c'est pour mettre des lignes d'une table vers une autre, le order-by ne sert absolument à rien car il n'y a aucune notion d'ordre dans le stockage, c'est juste une problématique d'affichage.

    Oracle calcule le meilleur plan d'execution par le CBO (Cost Based Optimizer). Pour que ce dernier fonctionne bien, il faut passer des traitement sur le schéma, on dit courament "passer les stats". Ce traitement peut être passé plus ou moins régulièrement selon que la base évolue beaucoup ou pas.

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     BEGIN
       DBMS_STATS.GATHER_SCHEMA_STATS ('TON_SCHEMA');
     END;
    C'est tout ce qu'on peu dire dans un cas général, car effectivement tu donne un exemple qui est sans objet puisque aucune requete de ce type ne peut meme compiler

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

Discussions similaires

  1. Message 'Duplicate index entry'
    Par Poulou dans le forum Administration
    Réponses: 13
    Dernier message: 04/05/2004, 14h57
  2. Index n'est pas a jour
    Par touhami dans le forum Paradox
    Réponses: 5
    Dernier message: 11/12/2002, 14h47
  3. [Technique] Intérêt des index
    Par ddams dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 04/11/2002, 15h11
  4. [Technique] Index, comment font les moteurs de recherche ?
    Par bat dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 25/10/2002, 15h41
  5. Requête imbriquée et indexes INTERBASE
    Par vadim dans le forum InterBase
    Réponses: 2
    Dernier message: 06/09/2002, 16h15

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