Bonjour,

Alors tout est un peut dit dans le titre.

J'ai une vue qui me retourne ~200k lignes en 60 secondes.
Je dois cependant ajouter un appelle avec un fonction scalaire qui prend <1 seconde pour un appel unique.
Cependant lorsque j'ajoute la fonction à ma vue, elle semble être exécutée à chaque ligne, bien que le paramètre soit contant.

quelqu’un a une idée ?

Je ne peux malheureusement pas fournir le codes exactes mais l'exemple suivant est suffisamment représentatif.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
SELECT *
FROM <La table avec 200 k lignes>
Résultat en ~1 minute

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Declare @bidon Varchar(max)
SELECT @Bidon = dbo.LaFonction('Avec un paramètre en dur')
GO 200000
S’exécute les 200'000 fois en ~4 minutes

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
SELECT *, dbo.LaFonction('Avec un paramètre en dur')
FROM <La table avec 200 k lignes>
Coupé au bout de 20 minutes avec un résultat de 7 ligne