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

Prestazioni del piano di esecuzione della stored procedure SQL scadenti:sniffing dei parametri

Fondamentalmente sì - lo sniffing dei parametri (in alcuni livelli di patch di) SQL Server 2005 è gravemente interrotto. Ho visto piani che in effetti non vengono mai completati (entro ore su un piccolo set di dati) anche per piccoli set di dati (poche migliaia di righe) che vengono completati in pochi secondi una volta che i parametri sono stati mascherati. E questo nei casi in cui il parametro è sempre stato lo stesso numero. Aggiungo che allo stesso tempo stavo affrontando questo problema, ho riscontrato molti problemi con LEFT JOIN/NULL non completati e li ho sostituiti con NOT IN o NOT EXISTS e questo ha risolto il piano in qualcosa che sarebbe stato completato. Ancora una volta, un problema di piano di esecuzione (molto scadente). All'epoca in cui mi occupavo di questo, i DBA non mi davano l'accesso a SHOWPLAN e, da quando ho iniziato a mascherare ogni parametro SP, non ho avuto ulteriori problemi con il piano di esecuzione in cui avrei dovuto approfondire questo per il mancato completamento .

In SQL Server 2008 puoi utilizzare OPTIMIZE FOR UNKNOWN .