Finalmente, a partire dal Service Pack 1 di SQL Server 2008 R2, cambia il meccanismo di aggiornamento delle statistiche !
Come descritto molto molto bene in questo articolo di Igor Pagliai di Microsoft, finora la soglia che scatenava l’auto aggiornamento delle statistiche su tabelle con più di 500 records era fissa al 20% del numero di righe (più 500). Questo comporta, su tabelle molto grandi, la possibilità che SQL Server non scateni mai l’auto aggiornamento delle statistiche, con evidenti ripercussioni sui piani di esecuzione delle query!
A partire dal SP1 di SQL Server 2008 R2 questa soglia diventa dinamica, calcolata cioè sul numero di righe presenti nella tabella. Ancora l’algoritmo di calcolo del valore di soglia non è conosciuto, ma dai test che Igor riporta nell’articolo sembra che si abbassi con il crescere del numero di records presenti (ad esempio è l’1% per 10 milioni di records e decresce allo 0,3% per 100 milioni di records).
Questa funzionalità non è abilitata di default, ma va “accesa” introducendo nei parametri di avvio di SQL Server il flag –T2371 e riavviando il server.