A fragmentação de índices pode afetar significativamente o desempenho das bases de dados do SQL Server. A fragmentação ocorre quando a ordem lógica das páginas em um índice não coincide com a ordem física das páginas no armazenamento. Este guia demonstra como identificar e lidar com a fragmentação de índices.
Para verificar os níveis de fragmentação, você pode utilizar a seguinte consulta T-SQL:
SELECT
S.name AS 'Schema',
T.name AS 'Tabela',
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;
Essa consulta retorna informações sobre a fragmentação de índices para todos os índices no banco de dados atual com um nível de fragmentação superior a 0%. Ela fornece detalhes como esquema, tabela, nome do índice, percentual médio de fragmentação e número de páginas.
Para lidar com a fragmentação de índices, você pode reconstruir ou reorganizar os índices. Reconstruir um índice remove e recria o índice, enquanto reorganizar reorganiza fisicamente as páginas no nível folha do índice. A escolha entre reconstruir e reorganizar depende do nível de fragmentação e de outros fatores, como o tamanho do banco de dados e a disponibilidade de janela de manutenção.
Jorge García
Fullstack developer