Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kinerja Subquery klausa WHERE-CASE

Saya pikir solusinya mungkin secara teori membantu Anda meningkatkan kinerja, tetapi itu juga tergantung pada apa yang sebenarnya dilakukan fungsi skalar. Saya pikir dalam kasus ini (tebakan saya memformat tanggal hingga hari terakhir di kuartal) akan sangat diabaikan.

Anda mungkin ingin membaca halaman ini dengan solusi yang disarankan:

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

Dan di Workarounds, ada komentar yang

Jadi tampaknya ya, ini dapat meningkatkan kinerja.

Solusi Anda benar, tetapi saya akan merekomendasikan mempertimbangkan peningkatan SQL untuk menggunakan ELSE sebagai gantinya, itu terlihat lebih bersih bagi saya:

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. Nama kolom FirstName yang ditentukan dalam operator PIVOT bertentangan dengan nama kolom yang ada dalam argumen PIVOT

  2. Mensimulasikan fungsi group_concat MySQL di Microsoft SQL Server 2005?

  3. SQL Server 2005 - mengoptimalkan prosedur tersimpan

  4. SQL - Prosedur Tersimpan dengan Pernyataan Pilih menggunakan IN (@Variable_CommaDelimitedListOfIDS)

  5. Datepart untuk waktu antara (bukan tanggal Konversi)