Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

WHERE-CASE клауза Изпълнение на подзаявка

Мисля, че решението на теория може да ви помогне да увеличите производителността, но зависи и от това какво всъщност прави скаларната функция. Мисля, че в този случай (моето предположение е форматиране на датата към последния ден от тримесечието) наистина би било незначително.

Може да искате да прочетете тази страница с предложените решения:

http://connect.microsoft.com/SQLServer/feedback/details/273443/the-scalar-expression-function-would-speed-performance-while-keeping-the-benefits-of- функции #

И в Заобиколни решения има коментар, че

Така че изглежда, че да, това може да увеличи производителността.

Вашето решение е правилно, но бих препоръчал да обмислите подобрение на SQL, за да използвате ELSE вместо това, изглежда ми по-чисто:

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. SQL Server заявка за намиране на всички разрешения/достъп за всички потребители в база данни

  2. Кой е най-добрият начин да се осигури референтна цялост на репликирана база данни?

  3. Изравняване на йерархичен XML в SQL с помощта на метода nodes().

  4. SQL OVER() клаузата – кога и защо е полезна?

  5. Грешка при настройване на newsequentialid() по подразбиране в sql сървър 2008