sql >> Databasteknik >  >> RDS >> Sqlserver

sp_executesql är långsam med parametrar

Lägg till OPTION (OMKOMPILERA) till slutet

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

Jag misstänker att du upplever "parametersnuffning"

Om så är fallet kan vi lämna det med ALTERNATIV eller överväga alternativ

Uppdatering 1

Följande artikel kommer att introducera dig till "parametersniffning" http://pratchev.blogspot.be/2007/08/parameter-sniffing.html

Jag råder dig att lära känna ins och out eftersom det kommer att göra dig mycket bättre på att förstå sql-serverns interna funktioner (som kan bita).

Om du förstår det kommer du att veta att avvägningen med option omkompilera kan vara en prestandaminskning om satsen exekveras mycket ofta.

Jag lägger personligen till alternativ omkompilera efter Jag vet att grundorsaken är parametersniffning och lämna den kvar om det inte finns ett prestandaproblem. Att skriva om ett uttalande för att undvika dålig parametersniffning leder till förlust av avsikt och detta minskar underhållsbarheten. Men det finns fall då omskrivningen är motiverad (använd bra kommentarer när du gör det).

Uppdatering 2

Det bästa jag läste om ämnet var i kapitel 32 som heter "Parametersnuffning:din bästa vän... utom när det inte är av " av GRANT FRITCHEY

Det rekommenderas.

SQL Server MVP Deep Dives, Volym 2



  1. Aktivera fjärråtkomst till MySQL-databasen

  2. Reverse engineering (oracle) schema till ERD

  3. 3 sätt att formatera ett tal till 2 decimaler i Oracle

  4. Arbeta med MyISAM i MySQL