Che dovrebbe essere utilizzato dopo incasinare indice cluster? statistiche di aggiornamento, Reindicizza o Riorganizza

dba.stackexchange https://dba.stackexchange.com/questions/16702

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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top