Aide pour définir des index (traitement long)
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:
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:
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 !