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

Czy występuje problem z wydajnością podczas korzystania z funkcji ISNULL() w programie SQL Server?

ISNULL() w klauzuli select ma znikomy wpływ na wydajność. Z drugiej strony, w klauzuli where może mieć bardzo duży wpływ na wydajność, ponieważ uniemożliwia optymalizatorowi użycie indeksu w tej kolumnie.

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.

Tak więc, używając isnull() w klauzuli where, oceń, czy uniemożliwia to optymalizatorowi zapytań użycie indeksu. Jeśli tak, rozważ utworzenie kolumny wyliczanej z wynikiem if isnull(col1, 0) i zindeksuj kolumnę wyliczaną i użyj jej w klauzuli 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. Określ, które obiekty odwołują się do tabeli w SQL Server

  2. Przekształć wynik pionowy w tryb poziomy (T-SQL)

  3. Zwróć wiersze, których dotyczy procedura składowana na każdej WSTAWCE, aby wyświetlić je na stronie ASP.NET

  4. Skalowalne procesory Intel Xeon i SQL Server 2017

  5. Jak mogę sklonować bazę danych SQL Server na tym samym serwerze w SQL Server 2008 Express?