DBAtlas · Atlas de operações de banco de dados

Mostrar a fragmentação dos índices

SQL ServerManutenção

Comando

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.

Abrir no DBAtlas →

Relacionados