Bonjour,
SQL 2000
je charge par bcp une table de 210000 lignes, le chargement ne prend que 1 minutes !
je veux faire une mise à jour sur un des champs de la table (une mise à jour de 210000 ligne), en fait la mise à jour est de concaténer 2 champs et de les mettres dans un troisième champs :
ma fonction FN_GENERER_SCHEMA_COMPTABLE consiste en :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 UPDATE T_ECRITURE_COMPTA SET T_ECRITURE_COMPTA.SCHEMA_COMPTABLE = A.MAJ FROM T_ECRITURE_COMPTA, (SELECT distinct ECRITURE_NUM, dbo.FN_GENERER_SCHEMA_COMPTABLE(ECRITURE_NUM) As MAJ from T_ECRITURE_COMPTA) A WHERE T_ECRITURE_COMPTA.ECRITURE_NUM = A.ECRITURE_NUM
la table T_ECRITURE_COMPTA contient plus de 50 colonnes (ce n'est pas moi qui l'a définit)
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 CREATE FUNCTION FN_GENERER_SCHEMA_COMPTABLE (@ECR_NUM INT) RETURNS VARCHAR(8000) AS BEGIN DECLARE @MAJ VARCHAR(8000) SET @MAJ = '' SELECT @MAJ = RACINE_GENE + ' ' + SENS_ECRITURE + ' - ' + @MAJ FROM T_ECRITURE_COMPTA WHERE ECRITURE_NUM = @ECR_NUM GROUP BY RACINE_GENE, SENS_ECRITURE , ECRITURE_NUM RETURN Left(@MAJ, Len(@MAJ)-1) END
comme vous le voyer, le champs ne peut pas être un champs calculé pour qu'il soit directement alimenté lors de l'import bcp !!
cette requête de MAJ (procédure stocké) me prend plus qu'une heure qui est trop long pour mon utilisateur
j'ai essayé de mettre un index non ordonné sur RACINE_GENE et un autre index non ordonné sur SENS_ECRITURE mais cela ne change absolument rien, j'ai toujours mon heure de traitement !
Voila, avez vous des idées d'amélioration du temps de traitements notament la création d'index ...
En vous remerciant !
Partager