Utilizo el script Ola Hallengrens para el mantenimiento del índice. Antes de hacerlo, utilicé la siguiente consulta para ver qué índices están más fragmentados:
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
En mi caso, la fragmentación promedio fue superior al 70% para 15 índices y superior al 30% para 28 índices.
Entonces, reconstruyo cada índice usando la solución de Ola Hallengren. Cuando volví a ejecutar la consulta, este fue el resultado:
Fragmentación superior al 70% para 12 índices, superior al 30% para 15 índices.
Supuse que la razón se debía a page_count
que era inferior a 1000 para cada uno de los índices que todavía estaban muy fragmentados. ¡Por ejemplo, uno de los índices con un
page_count
967 tiene un porcentaje de fragmentación del 98,98% ! ¡Para mí, parece que vale la pena reconstruir ese índice! Lo hice, y luego, la fragmentación fue del 0% . Además, un índice con un page_count
132 pasó del 95% al 0%
Entonces, mi pregunta es, ¿qué razones habría para NO reconstruir esos índices? Una razón podría ser que la reconstrucción cuesta tiempo y recursos, pero debido a que los índices son pequeños, ¿no significa esto que cuesta relativamente pocos recursos y que de todos modos sería beneficioso reconstruirlo?
Hay varias preguntas relacionadas en este sitio, pero todas responden a la pregunta de por qué un índice no se desfragmentaría, o si los índices siguen siendo útiles si son pequeños y no los desfragmenta, mientras que aquí la declaración SÍ disminuye la fragmentación, con la pregunta es, ¿por qué no hacerlo de todos modos?