sql >> Databáze >  >> RDS >> Sqlserver

sp_executesql je pomalý s parametry

Přidejte OPTION (RECOMPILE) na konec

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

Mám podezření, že dochází k „sniffování parametrů“

Pokud tomu tak je, můžeme to nechat s OPTION nebo zvážit alternativy

Aktualizace 1

Následující článek vám představí „sniffování parametrů“ http://pratchev.blogspot.be/2007/08/parameter-sniffing.html

Doporučuji, abyste se seznámili se vstupy a výstupy, protože vám to umožní mnohem lépe porozumět interním informacím serveru SQL (které mohou kousnout).

Pokud tomu rozumíte, budete vědět, že kompromis s možností rekompilace může být snížením výkonu, pokud je příkaz proveden velmi často.

Osobně přidávám možnost rekompilace po Vím, že hlavní příčinou je sniffování parametrů a ponechte jej, pokud nedojde k problému s výkonem. Přepsání příkazu, aby se zabránilo špatnému sniffování parametrů, vede ke ztrátě záměru a to snižuje udržovatelnost. Existují však případy, kdy je přepsání oprávněné (použijte dobré komentáře, když to uděláte).

Aktualizace 2

Nejlépe, co jsem na toto téma přečetl, byla kapitola 32 s názvem „Čichání parametrů:váš nejlepší přítel... kromě případů, kdy to není od“ od GRANT FRITCHEY

Doporučuje se.

SQL Server MVP Deep Dives, svazek 2



  1. Upgradujte MySQL na MariaDB 10 (část 1 – Instalace MariaDB 5.5)

  2. Co dělá příkaz SQL sargable?

  3. Jaký je nejlepší rámec vysoké dostupnosti PostgreSQL? PAF vs. repmgr vs. Patroni Infographic

  4. Jak získat včerejší datum v SQLite