Mostrar a fragmentação dos índices
SQL ServerManutençãoComando
SELECT OBJECT_SCHEMA_NAME(ips.object_id) AS schema_name,
OBJECT_NAME(ips.object_id) AS table_name,
i.name AS index_name,
ips.index_type_desc,
ROUND(ips.avg_fragmentation_in_percent,1) AS frag_pct,
ips.page_count
FROM sys.dm_db_index_physical_stats(DB_ID(N'Customer'), NULL, NULL, NULL, 'LIMITED') ips
JOIN sys.indexes i
ON i.object_id = ips.object_id AND i.index_id = ips.index_id
WHERE ips.avg_fragmentation_in_percent > 10
AND ips.page_count > 1000
ORDER BY ips.avg_fragmentation_in_percent DESC;O que faz
Lista o percentual de fragmentação e a quantidade de páginas dos índices; a base para a decisão entre rebuild/reorganize.
Quando usar
Antes da manutenção, para decidir quais índices tratar.
Atenção
A fragmentação é irrelevante em índices pequenos (< 1000 páginas); eles são filtrados. O modo 'DETAILED' é mais preciso, mas muito caro; 'LIMITED' geralmente basta. Apenas consulta; sem risco.