Uso lo script di Ola Hallengrens per la manutenzione dell'Indice. Prima di farlo, ho usato la seguente query per vedere quali indici sono maggiormente frammentati:
SELECT dbschemas.[name] as 'Schema',
dbtables.[name] as 'Table',
dbindexes.[name] as 'Index',
indexstats.avg_fragmentation_in_percent,
indexstats.page_count
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS indexstats
INNER JOIN sys.tables dbtables on dbtables.[object_id] = indexstats.[object_id]
INNER JOIN sys.schemas dbschemas on dbtables.[schema_id] = dbschemas.[schema_id]
INNER JOIN sys.indexes AS dbindexes ON dbindexes.[object_id] = indexstats.[object_id]
AND indexstats.index_id = dbindexes.index_id
ORDER BY indexstats.avg_fragmentation_in_percent desc
Nel mio caso, avg_fragmentation ha superato il 70% per 15 indici e oltre il 30% per 28 indici.
Quindi, ricostruisco ogni indice usando la soluzione di Ola Hallengren. Quando ho eseguito nuovamente la query, questo era il risultato:
Frammentazione oltre il 70% per 12 indici, oltre il 30% per 15 indici.
Ho pensato, il motivo era a causa del page_count
, che era inferiore a 1000 per ciascuno degli indici che erano ancora molto frammentati. Ad esempio, uno degli indici con un valore
page_count
di 967 ha una percentuale di frammentazione del 98,98% ! Per me, vale la pena ricostruire quell'indice! L'ho fatto e, successivamente, la frammentazione è stata dello 0% . Inoltre, un indice con a page_count
di 132 è passato dal 95% allo 0%
Quindi, la mia domanda è: quali motivi ci sarebbero per NON ricostruire quegli indici? Una ragione potrebbe essere che la ricostruzione costa tempo e risorse, ma poiché gli indici sono piccoli, ciò non significa che costa relativamente poche risorse e sarebbe comunque ben ricostruibile ricostruirla?
Ci sono più domande correlate su questo sito, ma tutte rispondono alla domanda sul perché un indice non deframmenterebbe o se gli indici sono ancora utili se sono piccoli e non li deframmentate, mentre qui l'affermazione diminuisce la frammentazione, con la domanda è, perché non farlo comunque?