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

Apakah ada masalah Performa saat menggunakan ISNULL() di SQL Server?

ISNULL() di pilih-klausa memiliki pengaruh yang dapat diabaikan pada kinerja. Di mana-klausa di sisi lain dapat memiliki dampak yang sangat besar pada kinerja, karena mencegah pengoptimal untuk menggunakan indeks pada kolom itu.

where isnull(col1, 0) = 0 -- unable to use index, because every 
                          -- row has to be evaluated

where col1 = isnull(@myVar, 0) -- index will be used, since isnull(@myVar, 0) 
                               -- returns the same static value for every row and 
                               -- not every row has to be evaluated by the function.

Jadi, saat menggunakan isnull() di klausa mana, evaluasi apakah itu mencegah pengoptimal kueri menggunakan indeks. Jika demikian, pertimbangkan untuk membuat kolom yang dihitung dengan hasil if isnull(col1, 0) dan indeks kolom yang dihitung dan gunakan di klausa mana Anda.



  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 2016:Selalu Dienkripsi

  2. Bagaimana INTERSECT Bekerja di SQL Server

  3. Crystal Reports vs. Layanan Pelaporan Microsoft SQL Server

  4. Masukkan gambar ke dalam database

  5. Tidak dapat menghubungkan SQLEXPRESS dengan Laravel 5.6