2014-05-03 17 views

risposta

29

sp_updatestats aggiorna tutte le statistiche per tutte le tabelle del database, in cui anche una sola riga è cambiato. Lo fa usando il campione di default, il che significa che non esegue la scansione di tutte le righe nella tabella in modo che possa produrre statistiche meno accurate rispetto alle alternative.

Se si dispone di un piano di manutenzione con 'ricostruire gli indici' inclusi, sarà anche aggiornare le statistiche, ma più preciso, perché la scansione di tutte le righe. Non è necessario ricostruire le statistiche dopo la ricostruzione degli indici.

Aggiornamento manuale statistiche particolari oggetto o una tabella con update statistics comando che si dà molto migliore controllo sul processo. Per automatizzarlo, dai un'occhiata a here. solo

Aggiornamento automatico si attiva quando ottimizzatore decide deve. C'è stato un cambiamento in matematica per il 2012: in < 2012, aggiornamento automatico è stato licenziato per ogni cambio 500 + 20% a righe della tabella; nel 2012+ è SQRT (1000 * righe di tabella). Significa che è più frequente su grandi tavoli. Le tabelle temporanee si comportano in modo diverso, ovviamente.

Per concludere, sp_updatestats potrebbe effettivamente fare più danni che buoni, ed è l'opzione meno raccomandabile.

+0

+1 per correggere un malinteso che avevo. Ho pensato che sp_updatestats funzionasse sugli stessi principi usati dalle statistiche di aggiornamento automatico (cioè il 20% di cambiamento). Grazie! –

+0

@BenThul Thx, ma vedi la mia modifica per maggiori informazioni. – dean

+10

@dean Mi interessa la tua preoccupazione per le conseguenze di questo? "potrebbe effettivamente fare più danni che buoni, ed è l'opzione meno raccomandabile." - Sembra che l'unico problema è che potrebbe fare cose che i tuoi piani di manutenzione già fanno o essere inefficienti, ma quanto è grande un problema se l'alternativa è un'istanza del server SQL che non risponde? – Flo