Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Alternative à l'utilisation de variables locales dans une clause where

Utilisation de variables locales à WHERE le filtre provoque FULL TABLE SCAN. Parce que SS ne connaît pas les valeurs des variables locales au moment de la compilation. Ainsi, il crée un plan d'exécution pour la plus grande échelle disponible pour la colonne.

Afin d'éviter le problème de performances, SS doit connaître les valeurs des variables au moment de la compilation. Définir un SP et passer ces variables locales en paramètre est une des solutions du problème. Une autre solution consiste à utiliser sp_executesql et en passant à nouveau ces variables locales en paramètre...

Ou vous pouvez ajouter OPTION ( RECOMPILE ) à la fin de votre instruction sql pour que vos variables locales soient compilées. Cela résoudra le problème des performances.