La fragmentación de índices puede afectar significativamente el rendimiento de las bases de datos de SQL Server. La fragmentación ocurre cuando el orden lógico de las páginas en un índice no coincide con el orden físico de las páginas en el almacenamiento. Esta guía demuestra cómo identificar y abordar la fragmentación de índices.
SELECT
S.name AS 'Schema',
T.name AS 'Tabla',
I.name AS 'Índice',
DDIPS.avg_fragmentation_in_percent,
DDIPS.page_count
FROM
sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS DDIPS
INNER JOIN
sys.tables T ON T.object_id = DDIPS.object_id
INNER JOIN
sys.schemas S ON T.schema_id = S.schema_id
INNER JOIN
sys.indexes I ON I.object_id = DDIPS.object_id
AND DDIPS.index_id = I.index_id
WHERE
DDIPS.database_id = DB_ID()
AND I.name IS NOT NULL
AND DDIPS.avg_fragmentation_in_percent > 0
ORDER BY
DDIPS.avg_fragmentation_in_percent DESC;
Esta consulta devuelve información sobre la fragmentación de índices para todos los índices en la base de datos actual con un nivel de fragmentación superior al 0%. Proporciona detalles como esquema, tabla, nombre del índice, porcentaje de fragmentación promedio y cantidad de páginas.
Para abordar la fragmentación de índices, puedes reconstruir o reorganizar índices. Reconstruir un índice elimina y recrea el índice, mientras que reorganizar físicamente reordena las páginas de nivel de hoja del índice. La elección entre reconstruir y reorganizar depende del nivel de fragmentación y otros factores como el tamaño de la base de datos y la disponibilidad de ventana de mantenimiento.
Jorge García
Fullstack developer