sql >> Database teknologi >  >> RDS >> Sqlserver

sp_executesql er langsom med parametre

Tilføj OPTION (GENKOMPILER) til slutningen

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

Jeg formoder, at du oplever "parameter sniffing"

Hvis det er tilfældet, kan vi lade det være med OPTION eller overveje alternativer

Opdatering 1

Den følgende artikel vil introducere dig til "parameter sniffing" http://pratchev.blogspot.be/2007/08/parameter-sniffing.html

Jeg råder dig til at lære ins og out at kende, fordi det vil gøre dig meget bedre til at forstå sql server internals (der kan bide).

Hvis du forstår det, vil du vide, at afvejningen med option omkompilere kan være et præstationsfald, hvis sætningen udføres meget tit.

Jeg tilføjer personligt option rekompilere efter Jeg ved, at grundårsagen er parametersniffing og lad det være, medmindre der er et ydeevneproblem. Omskrivning af en erklæring for at undgå dårlig parametersniffing fører til tab af hensigt, og dette mindsker vedligeholdelsesevnen. Men der er tilfælde, hvor omskrivningen er berettiget (brug gode kommentarer, når du gør det).

Opdatering 2

Den bedste læsning, jeg havde om emnet, var i kapitel 32 kaldet "Parameter sniffing:din bedste ven... undtagen når det ikke er af " af GRANT FRITCHEY

Det anbefales.

SQL Server MVP Deep Dives, bind 2



  1. Fælles tabeludtryk i MySQL

  2. Hvad er underforespørgsler i oracle

  3. Brug af en sorteringsrækkefølgekolonne i en databasetabel

  4. Hvordan får man antallet af hver særskilte værdi i en kolonne?