Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/01/2012, 14h51   #1
Membre Expert
 
Avatar de lola06
 
Femme Laure
Consultante en Business Intelligence
Inscription : avril 2007
Messages : 983
Détails du profil
Informations personnelles :
Nom : Femme Laure
Âge : 25
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Consultante en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : avril 2007
Messages : 983
Points : 1 693
Points : 1 693
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 ?
__________________
~ Lola ~

Ne pas oublier :
et aussi :
lola06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 15h06   #2
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
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.
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 18/01/2012, 15h17   #3
Membre Expert
 
Avatar de lola06
 
Femme Laure
Consultante en Business Intelligence
Inscription : avril 2007
Messages : 983
Détails du profil
Informations personnelles :
Nom : Femme Laure
Âge : 25
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Consultante en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : avril 2007
Messages : 983
Points : 1 693
Points : 1 693
Merci beaucoup pour la source
Je m'y met de suite
__________________
~ Lola ~

Ne pas oublier :
et aussi :
lola06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 12h20   #4
Membre Expert
 
Avatar de lola06
 
Femme Laure
Consultante en Business Intelligence
Inscription : avril 2007
Messages : 983
Détails du profil
Informations personnelles :
Nom : Femme Laure
Âge : 25
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Consultante en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : avril 2007
Messages : 983
Points : 1 693
Points : 1 693
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
__________________
~ Lola ~

Ne pas oublier :
et aussi :
lola06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 12h36   #5
Membre Expert
 
Inscription : août 2009
Messages : 779
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 779
Points : 1 098
Points : 1 098
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 !
Rei Ichido est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/01/2012, 14h08   #6
Membre Expert
 
Avatar de lola06
 
Femme Laure
Consultante en Business Intelligence
Inscription : avril 2007
Messages : 983
Détails du profil
Informations personnelles :
Nom : Femme Laure
Âge : 25
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Consultante en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : avril 2007
Messages : 983
Points : 1 693
Points : 1 693
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...
Fichiers attachés
Type de fichier : sql requete1.sql (13,9 Ko, 10 affichages)
__________________
~ Lola ~

Ne pas oublier :
et aussi :
lola06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 15h57   #7
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 435
Points : 10 435
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
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 :
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.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 16h08   #8
Membre Expert
 
Avatar de lola06
 
Femme Laure
Consultante en Business Intelligence
Inscription : avril 2007
Messages : 983
Détails du profil
Informations personnelles :
Nom : Femme Laure
Âge : 25
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Consultante en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : avril 2007
Messages : 983
Points : 1 693
Points : 1 693
Ok merci je vais creuser dans ce sens.
__________________
~ Lola ~

Ne pas oublier :
et aussi :
lola06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 16h23   #9
Membre Expert
 
Avatar de lola06
 
Femme Laure
Consultante en Business Intelligence
Inscription : avril 2007
Messages : 983
Détails du profil
Informations personnelles :
Nom : Femme Laure
Âge : 25
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Consultante en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : avril 2007
Messages : 983
Points : 1 693
Points : 1 693
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.
__________________
~ Lola ~

Ne pas oublier :
et aussi :
lola06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 16h34   #10
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 435
Points : 10 435
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Méa culpa pour la 8i, il faut changer le FROM ainsi :
Code :
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;
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 09h35   #11
Membre Expert
 
Avatar de lola06
 
Femme Laure
Consultante en Business Intelligence
Inscription : avril 2007
Messages : 983
Détails du profil
Informations personnelles :
Nom : Femme Laure
Âge : 25
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Consultante en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : avril 2007
Messages : 983
Points : 1 693
Points : 1 693
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...
__________________
~ Lola ~

Ne pas oublier :
et aussi :
lola06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h43.


 
 
 
 
Partenaires

Hébergement Web