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 :

Lenteur Insert dans ma table cible


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 42
    Par défaut Lenteur Insert dans ma table cible
    Bonjour ,

    Je suis confronté à une enorme lenteur pour alimenter ma table cible .
    Dans ma cible il n' y a juste une clé primaire , pas d'index , ni d'autre clé etrangère .
    Voila mon code :
    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
    22
    DECLARE
    cursor AlimTableFait is 
    SELECT c.CDE_NUM,c.OP_NUM ,sfdd_str.getfield(C.CDE_COMP1,';',34,1) as  DateCachetPostale,o.op_da_deb, o.op_da_fin,sfdd_str.getfield(C.CDE_COMP1,';',4,1)as DATE_ACHAT_OU_TC_OU_BDC ,
    o.op_da_bloc_rec ,o.op_da_bloc_rec+3,ch.CKLV_DA_REA,c.CDE_DA_ETA  
    FROM o_operation@sfdd o,o_commande@sfdd c , O_CHECK_LIST_VAL@sfdd  ch
    where c.op_num=o.op_num and  ch.op_num=o.op_num  and ch.op_num=c.op_num and
    o.tie_num_cli= '000051' ; 
     
    M   AlimTableFait%ROWTYPE;
     
    BEGIN
     
    OPEN AlimTableFait ;
    loop
     
    fetch AlimTableFait into M ;
    insert into table_fait_activite_globale values (M.OP_NUM,M.DateCachetPostale, M.op_da_deb,M.op_da_fin,M.DATE_ACHAT_OU_TC_OU_BDC,M.op_da_bloc_rec ,
    M.op_da_bloc_rec+3,M.CKLV_DA_REA,M.CDE_DA_ETA,M.CDE_NUM);
    EXIT WHEN AlimTableFait%NOTFOUND;
    end loop;
     
    end;
    Le select est très rapide , mais quand j'execute tout c'est vraiment lent .

  2. #2
    Membre éclairé
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Par défaut
    Je t'invite à te documenter sur BULK COLLECT et FORALL, tu vas y trouver ton bonheur

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 42
    Par défaut
    Citation Envoyé par PpPool Voir le message
    Je t'invite à te documenter sur BULK COLLECT et FORALL, tu vas y trouver ton bonheur
    Merci pour ton aide .En attendant , je soumettrai ce problème au DBA oracle .

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Par défaut
    as tu simplement pris le temps 1 MINUTE de regarder sur DVP des exemples avec les mots clefs que je t'ai donné ??????

    tu en as pour 10 min ensuite pour modifier ta procédure PL;

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    C'est le code complet ??

    Parce que c'est l'équivalent de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    INSERT INTO table_fait_activite_globale (TOUJOURS METTRE LES NOMS DES COLONNES)
    SELECT c.OP_NUM ,sfdd_str.getfield(C.CDE_COMP1,';',34,1) AS  DateCachetPostale, o.op_da_deb, o.op_da_fin, 
    				sfdd_str.getfield(C.CDE_COMP1,';',4,1)AS DATE_ACHAT_OU_TC_OU_BDC ,
    			o.op_da_bloc_rec +3, ch.CKLV_DA_REA,c.CDE_DA_ETA, c.CDE_NUM
    FROM o_operation@sfdd o,o_commande@sfdd c , O_CHECK_LIST_VAL@sfdd  ch
    WHERE c.op_num=o.op_num 
    AND  ch.op_num=o.op_num  
    AND ch.op_num=c.op_num 
    AND o.tie_num_cli= '000051' ;

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 42
    Par défaut
    OK .J'essaye la proposition de MCM , puis je me plonge sur les bull collect.

    je vous dirais qoui !

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

Discussions similaires

  1. Lenteur lors d'insertions dans des tables
    Par TheCurse dans le forum VB.NET
    Réponses: 7
    Dernier message: 23/03/2012, 19h10
  2. Réponses: 18
    Dernier message: 10/01/2009, 14h02
  3. [Sybase] Temps d'une insertion dans une table
    Par vsavoir dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 14/02/2005, 10h04
  4. Extraction d'un .txt et Insertion dans une table
    Par PoPmiSiR dans le forum Access
    Réponses: 8
    Dernier message: 28/10/2004, 19h13
  5. Détection insertion dans une Table
    Par abelman dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 06/07/2004, 14h24

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