sql >> Databasteknik >  >> RDS >> Sqlserver

Alternativ till att använda lokala variabler i en where-sats

Använda lokala variabler vid WHERE-filtret orsakar FULL TABELL SCAN. Eftersom SS inte känner till värdena för lokala variabler vid kompilering. Så det skapar en utförandeplan för den största skalan som kan vara tillgänglig för kolumnen.

För att förhindra prestandaproblemet måste SS känna till variablernas värden vid kompileringstillfället. Definiera en SP och att skicka dessa lokala variabler som en parameter är en av lösningarna på problemet. En annan lösning är att använda sp_executesql och skicka de lokala variablerna som en parameter igen...

Eller så kan du lägga till ALTERNATIV ( ÅTERKOMPILERA ) i slutet av din sql-sats för att få dina lokala variabler att kompileras. Detta kommer att lösa prestandaproblemet.



  1. ersätt skräpkaraktärer i mysql

  2. Laravel 5 PDOException kunde inte hitta drivrutinen

  3. onbeforeprint() och onafterprint() motsvarande för icke IE-webbläsare

  4. Hur lagrar man ett 128-bitars nummer i en enda kolumn i MySQL?