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

Има ли проблем с производителността при използване на ISNULL() в SQL Server?

ISNULL() в клаузата за избор има незначително влияние върху производителността. В клаузата where, от друга страна, може да има много голямо влияние върху производителността, тъй като не позволява на оптимизатора да използва индекс в тази колона.

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.

Така че, когато използвате isnull() в клауза where, оценете дали пречи на оптимизатора на заявките да използва индекс. Ако е така, обмислете създаването на изчислена колона с резултат if isnull(col1, 0) и индексирайте изчислената колона и я използвайте във вашата клауза where.



  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 сървър - SQL Server / TSQL урок 59

  2. Ограничение само за един запис, маркиран като по подразбиране

  3. Преглед на мисии Най-новата услуга за наблюдение на база данни - Spotlight Cloud

  4. Как мога да избера от списък със стойности в SQL Server

  5. Незадължителни аргументи в клаузата WHERE