Eu tenho um script identificando quais índices reconstruir.
select
'alter index ' + name + ' on ' + @dbname + '.dbo.' + OBJECT_NAME(a.object_id) + ' rebuild;'
from sys.dm_db_index_physical_stats (DB_ID(@dbname), NULL, NULL, NULL, NULL) AS a
inner join sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id
where avg_fragmentation_in_percent > 30
Que, por exemplo, gera:
alter index FooIndex on FooDb.dbo.FooTable rebuild;
Mas depois de executar a instrução alter, o índice ainda tem um valor de fragmentação alto e, se eu executá-lo novamente, não diminui (50%). Qualquer entrada sobre o que poderia estar errado seria muito apreciada.
ATUALIZADO: Aumentei manualmente o tamanho do BD o que conseguiu diminuir a fragmentação em alguns dos índices, mas ainda não em todos. Ainda tem um casal em torno de 50%.
//Daniel