Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Klauzula WHERE-CASE Wydajność podzapytania

Myślę, że rozwiązanie może teoretycznie pomóc w zwiększeniu wydajności, ale zależy to również od tego, co faktycznie robi funkcja skalarna. Myślę, że w tym przypadku (przypuszczam, że formatowanie daty do ostatniego dnia w kwartale) byłoby naprawdę znikome.

Możesz przeczytać tę stronę z sugerowanymi obejściami:

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

W Obejściach znajduje się komentarz, który

Wygląda więc na to, że tak, może to zwiększyć wydajność.

Twoje rozwiązanie jest poprawne, ale sugerowałbym rozważenie ulepszenia SQL, aby zamiast tego używać ELSE, dla mnie wygląda to czyściej:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Architektura programu SQL Server AlwaysOn (grupa dostępności) i instalacja krok po kroku — 3 kroki ręcznego przełączania awaryjnego

  2. Dynamicznie twórz tabelę tymczasową na podstawie wyników z SP

  3. SQL Server — Łączna suma, która resetuje się po napotkaniu 0

  4. Pobierz listę z wartościami początkowymi i końcowymi z tabeli dat i godzin

  5. Jak znaleźć nazwę ograniczeń typu not-null w SQL Server