OVH Cloud OVH Cloud

Performance en insert

2 réponses
Avatar
Cedric DEBARD
Bonjour,

J'ai cree une procedure stockee qui recupere des donnees dans plusieurs
tables pour les inserer dans une autre table. Je passe par une table
temporaire que je rempli.
Cette table contient 28000 enregistrements en moyenne. Lorsque je fais un
simple select * de ma table temporaire, la procedure orend entre 2 et 3
secondes. Par contre la procedure avec l'insertion dans la table finale
prend un temps 12 minutes 49 secondes..
insert into MATABLE (val1, val2) (select val1, val2 from #temp)

Pourquoi est ce si long. Bien sur , j'ai une cle primaire et des indexsur
cette derniere table(MATABLE) .. Est ce que cela vient de la?? Y a t-il un
moyen de contourner le probleme. Cela me semble long de mettre 12 minutes
pour remplir 28000 enregistrement: 28000/720 = 38 enregistrements/secondes

2 réponses

Avatar
Fred BROUARD
insert into MATABLE (val1, val2)
select val1, val2
from #temp

serait déjà mieux.

Quel sont les objets atenant à la table MATABLE : index, contraintes,
triggers notamment.

Sans ces informations aucune aide ne sera convaincante.

A +


Cedric DEBARD a écrit:
Bonjour,

J'ai cree une procedure stockee qui recupere des donnees dans plusieurs
tables pour les inserer dans une autre table. Je passe par une table
temporaire que je rempli.
Cette table contient 28000 enregistrements en moyenne. Lorsque je fais un
simple select * de ma table temporaire, la procedure orend entre 2 et 3
secondes. Par contre la procedure avec l'insertion dans la table finale
prend un temps 12 minutes 49 secondes..
insert into MATABLE (val1, val2) (select val1, val2 from #temp)

Pourquoi est ce si long. Bien sur , j'ai une cle primaire et des indexsur
cette derniere table(MATABLE) .. Est ce que cela vient de la?? Y a t-il un
moyen de contourner le probleme. Cela me semble long de mettre 12 minutes
pour remplir 28000 enregistrement: 28000/720 = 38 enregistrements/secondes





--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
Avatar
cedric DEBARD
C'est une table qui comporte a l'heure actuelle 2
millions d'enregistrements sur laquelle
-j'ai une cle primaire qui est une chaine de charactere
(concatenation de plusieurs champs)
- j'ai cree 2 autres index sur des champs de type int

- je n'ai pas de contrainte d'integrite
- pas de trigger

-----Message d'origine-----
insert into MATABLE (val1, val2)
select val1, val2
from #temp

serait déjà mieux.

Quel sont les objets atenant à la table MATABLE : index,


contraintes,
triggers notamment.

Sans ces informations aucune aide ne sera convaincante.

A +


Cedric DEBARD a écrit:
Bonjour,

J'ai cree une procedure stockee qui recupere des




donnees dans plusieurs
tables pour les inserer dans une autre table. Je passe




par une table
temporaire que je rempli.
Cette table contient 28000 enregistrements en moyenne.




Lorsque je fais un
simple select * de ma table temporaire, la procedure




orend entre 2 et 3
secondes. Par contre la procedure avec l'insertion




dans la table finale
prend un temps 12 minutes 49 secondes..
insert into MATABLE (val1, val2) (select val1, val2




from #temp)

Pourquoi est ce si long. Bien sur , j'ai une cle




primaire et des indexsur
cette derniere table(MATABLE) .. Est ce que cela vient




de la?? Y a t-il un
moyen de contourner le probleme. Cela me semble long




de mettre 12 minutes
pour remplir 28000 enregistrement: 28000/720 = 38




enregistrements/secondes





--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage


SQL / Delphi / web
Livre SQL - col. Référence :


http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros :


http://sqlpro.developpez.com
****************** mailto:


******************

.