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 :
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
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
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
la table T_ECRITURE_COMPTA contient plus de 50 colonnes (ce n'est pas moi qui l'a définit)
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 !