Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

WHERE-CASE-Klausel Leistung der Unterabfrage

Ich denke, die Lösung kann Ihnen theoretisch helfen, die Leistung zu steigern, aber es hängt auch davon ab, was die Skalarfunktion tatsächlich tut. Ich denke, das wäre in diesem Fall (meine Vermutung ist, das Datum auf den letzten Tag im Quartal zu formatieren) wirklich vernachlässigbar.

Vielleicht möchten Sie diese Seite mit vorgeschlagenen Problemumgehungen lesen:

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

Und in Problemumgehungen gibt es einen Kommentar, dass

Es scheint also, dass dies die Leistung steigern kann.

Ihre Lösung ist korrekt, aber ich würde empfehlen, eine Verbesserung der SQL in Betracht zu ziehen, um stattdessen ELSE zu verwenden, sie sieht für mich sauberer aus:

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