sql >> Databasteknik >  >> RDS >> Sqlserver

SQL dålig prestanda för exekveringsplan för lagrad procedur - parametersniffning

I grund och botten ja - parametersniffning (i vissa patchnivåer av) SQL Server 2005 är dåligt. Jag har sett planer som faktiskt aldrig slutförs (inom några timmar på en liten datamängd) ens för små (några tusen rader) datauppsättningar som slutförs på några sekunder när parametrarna är maskerade. Och detta är i de fall då parametern alltid har varit samma nummer. Jag vill tillägga att samtidigt som jag sysslade med detta, hittade jag många problem med att LEFT JOIN/NULLs inte slutfördes och jag ersatte dem med NOT IN or NOT EXISTS och detta löste planen till något som skulle fullbordas. Återigen, en (mycket dålig) utförandeplanfråga. När jag sysslade med det här, gav DBA:erna inte mig SHOWPLAN-åtkomst, och sedan jag började maskera varje SP-parameter har jag inte haft några ytterligare exekveringsplanproblem där jag skulle behöva gräva ner mig i detta för att inte slutföra .

I SQL Server 2008 kan du använda OPTIMIZE FOR UNKNOWN .



  1. Hur man hittar intervallet mellan två datum i PostgreSQL

  2. Var lagrar PostgreSQL konfigurations-/conf-filer?

  3. I tsql är en Insert med en Select-sats säker när det gäller samtidighet?

  4. MySQL-utlösare för att uppdatera ett fält till värdet av id