sql >> Databáze >  >> RDS >> Sqlserver

Klauzule WHERE-CASE Výkon poddotazu

Myslím, že řešení vám teoreticky může pomoci zvýšit výkon, ale také záleží na tom, co skalární funkce skutečně dělá. Myslím, že v tomto případě (můj odhad je formátování data na poslední den čtvrtletí) by to bylo opravdu zanedbatelné.

Možná si budete chtít přečíst tuto stránku s navrhovanými řešeními:

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

A v části Řešení je komentář, že

Zdá se tedy, že ano, může to zvýšit výkon.

Vaše řešení je správné, ale doporučil bych zvážit vylepšení SQL, aby místo toho používal ELSE, zdá se mi to čistší:

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


  1. Rails nedefinovaná metoda pro ActiveRecord_Associations_CollectionProxy

  2. CHYBA! Server skončil bez aktualizace souboru PID (/usr/local/mysql/data/Mac.local.pid)

  3. Nemohu zprovoznit INSERT

  4. mohou být dočasné proměnné MySQL použity v klauzuli WHERE?