Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Clausola WHERE-CASE Subquery Performance

Penso che la soluzione possa in teoria aiutarti ad aumentare le prestazioni, ma dipende anche da cosa fa effettivamente la funzione scalare. Penso che in questo caso (la mia ipotesi è formattare la data all'ultimo giorno del trimestre) sarebbe davvero trascurabile.

Potresti voler leggere questa pagina con soluzioni alternative suggerite:

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

E in Soluzioni alternative, c'è un commento che

Quindi sembra che sì, questo potrebbe aumentare le prestazioni.

La tua soluzione è corretta, ma consiglierei di considerare un miglioramento dell'SQL per utilizzare invece ELSE, mi sembra più pulito:

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