Bonjour,
J'ai créé une procédure stockées qui insert quelques dizaines de milliers d'enregistrements par rapport à plusieurs tables. Cela ne prend que quelques secondes. Cela dit au sein de cette procédure, dans mon select il faut que je divise plusieurs champs par un numbre que je vais chercher dans une autre table. A chaque ligne il faut rechercher de nouveau le nombre
J'ai donc fait une une fonction qui va chercher le nombre de la division.
La requette fonctionne mais cela prend beaucoup de temps (Plus d'une heure).
Voici une partie de la requette d'insertion.
Code de la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 INSERT INTO FAC_0101_RENTABILITE -- On insére dans la table de fait tous les enregistrements SELECT INT_0101_CDESCLIDAX.site_fact, INT_0101_HISTOSYNTHESERENTAB.cde_client, INT_0101_HISTOSYNTHESERENTAB.nom_client, INT_0101_HISTOSYNTHESERENTAB.famille_prod, PER_0101_FAMILLESPROD.nom_famprod, INT_0101_HISTOSYNTHESERENTAB.marche, INT_0101_HISTOSYNTHESERENTAB.aamm_solde, INT_0101_HISTOSYNTHESERENTAB.m2_meo/dbo.FUNC_PST_FAC_0101_RENTABILITE_NBLIGNE_CMDE(INT_0101_HISTOSYNTHESERENTAB.cde_client), INT_0101_HISTOSYNTHESERENTAB.laize/dbo.FUNC_PST_FAC_0101_RENTABILITE_NBLIGNE_CMDE(INT_0101_HISTOSYNTHESERENTAB.cde_client), INT_0101_HISTOSYNTHESERENTAB.m2_fab/dbo.FUNC_PST_FAC_0101_RENTABILITE_NBLIGNE_CMDE(INT_0101_HISTOSYNTHESERENTAB.cde_client),NT_0101_HISTOSYNTHESERENTAB.m2_plan_exp/dbo.FUNC_PST_FAC_0101_RENTABILITE_NBLIGNE_CMDE(INT_0101_HISTOSYNTHESERENTAB.cde_client), /* J'appel 10 ou 12 fois cette fonction */ + le reste de du select FROM mes tables WHERE mes crières
Je recherche le nombre de la division par rapport au num commande
Savez vous comment je pourrais accélerer l'execution de tout ceci ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE FUNCTION dbo.FUNC_PST_FAC_0101_RENTABILITE_NBLIGNE_CMDE (@NUMCMDE VARCHAR(6)) RETURNS integer AS BEGIN DECLARE @nbrows integer SELECT @nbrows = TMP.nbligne FROM TMP_FAC_0101_RENTABILITE_NBLIGNE_CMDE TMP WHERE TMP.cde_client like @NUMCMDE RETURN (@nbrows) END
Partager