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

sp_executesql działa wolno z parametrami

Dodaj OPCJA (REKOMPILUJ) na końcu

... AND SensorValue != -32767 OPTION (RECOMPILE) 

Podejrzewam, że doświadczasz „podsłuchiwania parametrów”

W takim przypadku możemy pozostawić to z OPCJA lub rozważyć alternatywy

Aktualizacja 1

Poniższy artykuł przedstawia „podsłuchiwanie parametrów” http://pratchev.blogspot.be/2007/08/parameter-sniffing.html

Radzę poznać tajniki, ponieważ dzięki temu znacznie lepiej zrozumiesz wewnętrzne elementy serwera sql (które mogą gryźć).

Jeśli to zrozumiesz, będziesz wiedział, że kompromis z opcją rekompilacji może być spadkiem wydajności, jeśli instrukcja zostanie wykonana bardzo często.

Osobiście dodaję opcję przekompilowania po Wiem, że główną przyczyną jest wąchanie parametrów i zostawiam to, chyba że występuje problem z wydajnością. Przepisanie oświadczenia w celu uniknięcia złego sniffowania parametrów prowadzi do utraty intencji, a to obniża łatwość konserwacji. Ale zdarzają się przypadki, gdy przepisanie jest uzasadnione (używaj dobrych komentarzy, kiedy to robisz).

Aktualizacja 2

Najlepszą lekturą, jaką miałem na ten temat, był rozdział 32 zatytułowany „Wąchanie parametrów:twój najlepszy przyjaciel... z wyjątkiem sytuacji, gdy nie jest to” autorstwa GRANT FRITCHEY

Jest to zalecane.

Głębokie nurkowania SQL Server MVP, tom 2



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Aktualizacja SQL z jednej tabeli do drugiej na podstawie dopasowania ID

  2. Jak usunąć zduplikowane wiersze w tabeli?

  3. Zwróć wartość przyrostu kolumny tożsamości w SQL Server

  4. Żądanie nie powiodło się ze stanem HTTP 401:Unauthorized IN SSRS

  5. SQL Server LIKE zawierający znaki nawiasu kwadratowego