Performance Table function vs Scalaire function
Bonjour,
Dans le cade de récupération de données d'une base vers une autre, j'ai créé une table de mappage des Devises entre ceux de la base source et ceux de la base cible,
la valeur retourné est une seule valeur donc je peux la faire via une fonction scalaire
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| CREATE FUNCTION udf_scal_Devise
(@SD_No INT,
@SO_ID INT
)
RETURNS INT
AS
BEGIN
RETURN
(
SELECT DV_Id
FROM
P_SOCIETEDEVISE sd
WHERE sd.SD_No = @SD_No
AND sd.SO_Id = @SO_Id
);
END; |
et l'appel sera :
Code:
1 2 3 4 5 6 7
|
SELECT dbo.udf_scal_Devise(r.N_Devise + 1, 1) as DV_ID,
r.RG_No,
r.CT_NumPayeur,
r.RG_Montant
FROM
BIJOU.dbo.F_CREGLEMENT r; |
Est ce que passer par une fonction table sera plus performant plus que le scalaire ?
NB : j'ai évité de passer par une jointure puisque la base source peut avoir plusieurs format (parfois une base ERP et parfois des fichiers plats) donc je pense que déjà par une fonction rend mon code plus générique et réutilisable