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 :

plan execution et pl sql


Sujet :

PL/SQL Oracle

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut plan execution et pl sql
    Bonjour a tous,

    est il possible de faire cette requette:
    select * from TABLE(dbms_xplan.display);
    apres avoir executer un package PL/SQL ??

    ca marche pareil que pour une requete SQL?

    D'avance merci

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 50
    Par défaut
    Mais c'est une requête SQL !

    Il faut juste avoir installer ce qu'il faut et donner les droits adéquats pour pouvoir utiliser les plans d'executions car cela affiche le résultat d'un plan préalablement calculé par: explain plan for ....

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut plan execution et pl sql
    Salut
    donc tu veux dire que ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DECLARE
    v_var NUMBER;
    BEGIN
    le select into
     
    END;
    c'est consideré comme une requete meme si y'a une declaration de variable, des eventuels filtre avec IF etc..?
    mmm ok ok super ca..
    Et point de vue de comment le faire
    tu fais:
    SQL>explain plan for
    et la tu fais
    SQL>@script.sql
    et voila??

    Par rapport aux droits et a ce qu'il faut installer au prealable, tu peux me donner une piste?
    Merci

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 50
    Par défaut
    Non, j'ai juste dit que "select * from TABLE(dbms_xplan.display);" c'est du SQL.
    Declare ... Begin ... end; c'est du PL, rien de nouveau sous le soleil.

    Quand tu cherches à afficher un plan d'exécution, il s'agit toujours d'un plan d'une requête SQL.

    Si c'est cette requête provient d'un code PL préalablement exécuté, tu dois pouvoir le faire en récupérant le sql_id de la requête désirée.

    Si ce code n'a pas été exécuté, il faut évidemment en extraire le texte SQL pour en faire l'explication. En le mettant dans un fichier éventuellement (si le texte est long par exemple) comme tu le suggères. Alors dans ce cas, "select * from TABLE(dbms_xplan.display);" permet ensuite d'en afficher le plan sous sqlplus.

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut plan execution et pl sql
    ok attend,
    si j'explique le but que je recherche ca peu aidé.
    Regarde, je bosse avec des developpeurs qui ecrivent le code SQL.
    Ils me passe 20 requetes, toutes ces requetes sont des count(*) donc retoure des valeur...ok
    Je dois les regrouper en une requete ou un script pour que le chef puisse avoir un rapport..son but est d'optenir un cvs avec : CHAMP;VALEUR

    donc une des formes de le faire en SQL serait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 'CP' AS INDICADOR , COUNT(*) AS VALOR FROM TABLE
    blabla_de_la_requete WHERE condition
    UNION ALL
    SELECT 'SF', COUNT(*) FROM TABLE1
    blabla_de_la_requete WHERE condition
    UNION ALL
    ....
    ce genre code fonctionne bien...mais peu etre qu'avec tout ces UNION ALL, le cost sera important.
    Donc j'ai pensé utilisé le PL/SQL qui permet d'executer chaque requete mettre la valeur dans une variable et donc a la fin faire un OUTPUT..et hop ca marche aussi, sans UNION ALL.
    Ce que je voudrias c'est comparer les 2 facon de faire pour voir celle qui coute le moins.

    Tu vois?

  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
    Par défaut
    Ecrite ta procédure PL/SQL et executez-la en activant d'abord la trace SQL. Mais je doute que tu gagnera quelque chose en passant par du PL/SQL dans ce cas.

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut plan execution et pl sql
    Ok je vais essayer.
    merci a tous

  8. #8
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 50
    Par défaut
    Comme il semble que de toute façon, tu dois lancer les requêtes pour les assembler ensuite, tu peux rester sur ton principe d'union all.

    Si le texte de tes requêtes est figé, tu peux même en faire une vue que tu pourras ainsi relancer à loisir.
    Dans la mesure où les prédicats de restriction sont au niveau de chaque requête (comme dans ton exemple), le coût n'explosera pas.

    De toute façon, un coup d'oeil sur les plans est toujours utile.

Discussions similaires

  1. [C#] Executer un fichier .SQL
    Par Thomas Lebrun dans le forum Accès aux données
    Réponses: 6
    Dernier message: 28/07/2009, 08h53
  2. [DB2] executer un fichier sql
    Par meufeu dans le forum DB2
    Réponses: 7
    Dernier message: 10/01/2009, 15h47
  3. [Oracle 10.2] Plan d'execution fonction PL/SQL
    Par pegase06 dans le forum PL/SQL
    Réponses: 6
    Dernier message: 13/02/2007, 12h02
  4. [Interbase & D7] executer un script SQL
    Par EGI dans le forum Bases de données
    Réponses: 7
    Dernier message: 13/03/2005, 12h42
  5. [DEBUTANT]Comment executer un script sql
    Par peaceinpal dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 15/03/2004, 08h44

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