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

Използването на функция за опростяване на SQL Query ще повлияе ли масово на производителността?

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

Ако трябва да филтрирате по резултат от скаларна функция (WHERE col = dbo.scalar_function() ), често помага вместо това да се направи вградена функция със стойност на таблица. Той ще върне стойността си като единствен ред от таблицата с резултати. След това бихте направили inner join с резултата от функцията, ефективно филтриране по върнатата стойност. Това работи, защото SQL Server винаги е в състояние да отвие вградени функции със стойност на таблица и да ги вгради в извикващата заявка.

Имайте предвид, че този трик няма да работи, ако функцията е многоетапна. Те не могат да се развият.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Пропускане на оператор WHERE, ако променливата за този оператор е нула

  2. IDENTITY() срещу IDENTITY() в SQL Server:Каква е разликата?

  3. Заявка:намерете редове, които не принадлежат към списък със стойности

  4. Как да посочите различен номер на порт в SQL Management Studio?

  5. Нивото на вмъкване на тригера е надвишено?