sql >> Databasteknik >  >> RDS >> Sqlserver

WHERE-CASE klausul Subquery Performance

Jag tror att lösningen i teorin kan hjälpa dig att öka prestandan, men det beror också på vad den skalära funktionen faktiskt gör. Jag tror att i det här fallet (min gissning är att formatera datumet till sista dagen i kvartalet) skulle det verkligen vara försumbart.

Du kanske vill läsa den här sidan med föreslagna lösningar:

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

Och i Workarounds finns det en kommentar som

Så det verkar som att ja, detta kan öka prestandan.

Din lösning är korrekt, men jag skulle rekommendera att överväga en förbättring av SQL för att använda ELSE istället, det ser renare ut för mig:

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


  1. 2 sätt att returnera rader som innehåller alfanumeriska tecken i MySQL

  2. Spara byte array i sql server

  3. Hur återställer man det bortglömda MySQL root-lösenordet?

  4. PostgreSQL:INTE IN kontra UTOM prestandaskillnad (redigerad #2)