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

Ще върне ли TSQL по-бързи резултати от съхранената процедура в SQL Server

Във вашите заявки добавете OPTION(OPTIMIZE FOR UNKNOWN) (като последната клауза), за да се предотврати надушването на параметър. За синтаксис и обяснение вижте документацията за Query Hints .

Това, което SQL Server прави за първи път, когато стартира съхранена процедура, е да оптимизира плана(овете) за изпълнение за параметрите, които са му предадени. Това се прави в процес, който се нарича Parameter Sniffing .

По принцип плановете за изпълнение се кешират от SQL Server, така че SQL Server не трябва да компилира отново всеки път за една и съща заявка. Следващият път, когато процедурата се изпълни, SQL Server ще използва повторно плана(ите) за изпълнение за заявките в него... Планът(ите) за изпълнение обаче може да е напълно неефективен, ако го (ги) извикате с различни параметри .

Опцията, която ви дадох, ще каже на SQL компилатора, че планът за изпълнение не трябва да бъде оптимизиран за специфични параметри, а по-скоро за всеки параметър, който се предава на съхранената процедура.

За да цитирате документацията:

В някои случаи съхранените процедури могат да се възползват от надушването на параметри, в някои случаи не. За съхранените процедури, които не се възползват от параметър нахващане, можете да добавите опцията към всяка заявка, която използва някой от параметрите на съхранената процедура.



  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 2008 и SQL Server 2005 и дата и час

  2. Колоната DateAdd причини препълване

  3. SQL Server и имплицитно преобразуване на типове

  4. freeTDS не използва своята конфигурация

  5. Изтриване на пощенски профил на база данни (SSMS)