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 :

[8i] Optimisation de procédure


Sujet :

PL/SQL Oracle

  1. #1
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut [8i] Optimisation de procédure
    Bonjour,

    J'ai un certain nombre de procédures PL/SQL que je dois reprendre, j'aurai voulu au passage les optimiser.

    Après quelques recherches je n'ai trouvé qu'un seul point sur lequel on peut faire jouer le temps d'exécution --> les curseurs.

    Mais je n'ai pas très bien compris le focntionnement. Si une bonne âme pouvait m'expliquer ça serait super !!

    Sinon connaissez-vous d'autres optimisation possibles ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Lis cette article de notre maître Zappaïen Sheikyerbouti :
    http://sheikyerbouti.developpez.com/...timisation.pdf

    L'article ne semble pas très récent mais il contient un nombre de pistes pertinentes.

  3. #3
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    Merci beaucoup pour la source
    Je m'y met de suite

  4. #4
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    Bon je vais mettre ce sujet en résolu.
    J'avais bien suivies les indications données par le doc mais malheureusement à partir du moment où il y a trop de données sur lesquelles boucler l'optimisation est une illusion

  5. #5
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Citation Envoyé par lola06 Voir le message
    Bon je vais mettre ce sujet en résolu.
    J'avais bien suivies les indications données par le doc mais malheureusement à partir du moment où il y a trop de données sur lesquelles boucler l'optimisation est une illusion
    Même avec beaucoup de données, on peut optimiser - c'est même là que les optimisations peuvent être efficaces !
    Par contre, c'est sûr que même en optimisant "à fond", on finit toujours par atteindre un minimum qui peut ne pas être négligeable en temps quand le volume est très important.

    Tu as viré tes curseurs ? C'est souvent une bonne piste Beaucoup de procs sont écrites "en mode curseur" alors que faire de l'ensembliste marcherait tout aussi bien et beaucoup plus rapidement !

  6. #6
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    Je n'ai pas viré mes curseurs car je n'ai pas réussi à les transformer en ensemblistes.

    Je met ma requête en pièce jointe, peut-être que vous pourrez m'aider.
    Il y a certainement des choses à améliorer...

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Difficile de regarder tout en détail, mais l'idée c'est plutôt que d'avoir quatre curseurs on travaille sur une seule requête, dans votre cas ça pourrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    SELECT bnf.BENF_ID
         , TO_NUMBER(LPAD(bnf.BENF_NIR_SX, 1,'0') || LPAD(bnf.BENF_NIR_AA, 2,'0') ||
           LPAD(bnf.BENF_NIR_MM, 2,'0') || LPAD(DECODE(bnf.BENF_NIR_DPT,'2A','19','2B','18', bnf.BENF_NIR_DPT), 2, '0') ||
           LPAD(bnf.BENF_NIR_COM, 3, '0') || LPAD(bnf.BENF_NIR_NUM, 3, '0')) as BENF_NIR
         , bnf.BENF_NIR_CLE
         , bnf.BENF_IND_NIR
         , bnf.CIV_ID
         , bnf.NATI_ID
         , iad.INS_ADRT_ID
         , TO_CHAR(iad.INS_ADRT_D_DEB,'YYYYMMDD')                 as INS_ADRT_D_DEB
         , NVL(TO_CHAR(iad.INS_ADRT_D_FIN,'YYYYMMDD'),'99990101') as INS_ADRT_D_FIN
         , iad.MTF_PER_ADRT_ID
         , TO_CHAR(imm.IMMA_D_DEB,'YYYYMMDD')                     as IMMA_D_DEB
         , NVL(TO_CHAR(imm.IMMA_D_FIN,'YYYYMMDD'),'99990101')     as IMMA_D_FIN
         , imm.IMMA_ID
      FROM BENF bnf
           LEFT OUTER JOIN INS_ADRT iad
             ON iad.BENF_ID = bnf.BENF_ID
            AND iad.FLAG_ANNUL = 0
           LEFT OUTER JOIN IMMA imm
             ON imm.BENF_ID = bnf.BENF_ID;
    J'ai mis des jointures externes, à voir si elles sont nécessaires ou pas.
    Il faut sûrement aussi adapter le SELECT au niveau des NVL.

  8. #8
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    Ok merci je vais creuser dans ce sens.

  9. #9
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    Bon les LEFT OUTER JOIN ne marchent pas, normal je suis en 8i (j'ai pas réagis de suite car j'alterne 10g et 8i). Et on en aurait besoin.

    J'essaye de voir si je ne peux pas regrouper les requêtes autrement. A priori un seul des curseur aurait besoin de se traduire par un LEFT OUTER.

  10. #10
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Méa culpa pour la 8i, il faut changer le FROM ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      FROM BENF     bnf
         , INS_ADRT iad
         , IMMA     imm
     WHERE iad.BENF_ID   (+) = bnf.BENF_ID
       AND iad.FLAG_ANNUL(+) = 0
       AND imm.BENF_ID   (+) = bnf.BENF_ID;

  11. #11
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    Je reviens après avoir effectué mes tests et la solution de n'avoir un seul curseur n'est pas la meilleure. En effet mon temps se rallonge d'environ 30 minutes en passant de 4 curseurs à 1 seul .

    D'autres idées ? Parce que je suis à court...

    Sachant qu'en plus cette procédure ne tourne pas sur la base la plus grande...

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

Discussions similaires

  1. optimiser une procédure stockée
    Par ed222 dans le forum Développement
    Réponses: 8
    Dernier message: 15/06/2010, 17h30
  2. [optimisation] arguments procédure stocké
    Par freuh94 dans le forum Développement
    Réponses: 8
    Dernier message: 12/05/2010, 02h32
  3. Optimisation de procédure
    Par Superdub dans le forum PL/SQL
    Réponses: 28
    Dernier message: 22/05/2009, 11h44
  4. [SQL2005] Optimiser une procédure stockée
    Par david_chardonnet dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/12/2006, 15h48
  5. Réponses: 5
    Dernier message: 09/05/2005, 12h24

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