Che dovrebbe essere utilizzato dopo incasinare indice cluster? statistiche di aggiornamento, Reindicizza o Riorganizza
-
22-10-2019 - |
Domanda
Se ho un cluster indice di un'unica colonna, ad esempio FooId
in SQL Server 2008, 2012 e so che ho incasinato l'ordine delle righe per non avere ordine sequenziale della colonna FooId
più, che il comando / s deve essere usato :
- Aggiorna statistiche
- Rebuild
- Riorganizza
Modifica
Scenario
FooId
è un pk cluster di tipo sequenziale uniqueidentifier, ma per mantenerlo semplice questo post usiamo # 1 come valori id.
#1 inserted
#2 inserted
#3 inserted
#1 selected
#1 deleted
#2 selected
#2 deleted
#2 inserted
(che è riutilizzare la PK cluster di # 1)
#1 inserted
(che è riutilizzare la PK cluster di # 1)
Non è questo andando a rompere l'ordine sequenziale? Non sarà memorizzato in questo modo ora:
#3
#2
#1
// Daniel
Soluzione
Si può avere frainteso il modo in cui un cluster opere indice - per definizione dati logicamente ordinata nella sequenza della chiave di clustering, anche se è possibile che il cluster indice per la frammentazione fisicamente verificano pagina-spaccature quando si inserisce nuovi dati.
Se si vuole ridurre la frammentazione sia REBUILD
o REORGANIZE
può essere appropriato.
La regola generale è di fare nulla quando la frammentazione è inferiore al 5%, REORGANIZE
quando la frammentazione è compresa tra 5% e il 30%, e REBUILD
quando la frammentazione è superiore al 30%.
Indice frammentazione è registrato nel DMV sys .dm_db_index_physical_stats . Vedi anche pagina MSDN REBUILD/REORGANIZE
vale la pena di notare che a meno che non si esegue SQL Server Enterprise Edition, REBUILD
non può essere eseguita on-line - il che significa che la vostra tavola sarà inaccessibile per tutta la durata del comando. REORGANIZE
avviene sempre on-line.