J'utilise la même fonction de fenêtrage dans plusieurs QUAND dans un T-SQL SELECT.Fonction de fenêtre identique dans plusieurs champs dans T-SQL: optimisation?
SELECT
ModuleUsage = CASE
WHEN Operation = 1 and OperationResult=1 and 1 != LAG(operation) OVER(
PARTITION BY moduleid, clientname
ORDER BY moduleid, clientname, timestamp, operation
)
THEN 1
WHEN Operation = 2 and OperationResult=3 and 1 = LAG(operation) OVER(
PARTITION BY moduleid, clientname
ORDER BY moduleid, clientname, timestamp, operation
)
THEN -1
ELSE 0
END
, *
FROM [dbo].[LicencesTracing]
Est-il évalué deux fois ou l'optimiseur de requête réutilise-t-il le résultat une deuxième fois? Merci d'avance
Vous pouvez tester par vous-même. Utilisez 'SET STATISTICS' et faites une requête avec un seul appel de fenêtre. Ensuite, faites votre requête complète avec deux appels. Voyez-vous une différence? –