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

Clause WHERE-CASE Sous-requête Performances

Je pense que la solution peut en théorie vous aider à augmenter les performances, mais cela dépend aussi de ce que fait réellement la fonction scalaire. Je pense que dans ce cas (je suppose que la date est formatée au dernier jour du trimestre) serait vraiment négligeable.

Vous voudrez peut-être lire cette page avec des solutions de contournement suggérées :

http://connect.microsoft.com/SQLServer/feedback/details/273443/the-scalar-expression-function-would-speed-performance-while-keeping-the-benefits-of- fonctions#

Et dans les solutions de contournement, il y a un commentaire qui

Il semble donc que oui, cela peut augmenter les performances.

Votre solution est correcte, mais je recommanderais d'envisager une amélioration du SQL pour utiliser ELSE à la place, cela me semble plus propre :

AND ReportTypeID = CASE WHEN (@X = 1) THEN  1 
                    ELSE 4
                    END;