MSSQL - Fragmentación de índices
Esta vez vamos a ver, cómo verificar el estado de fragmentación de los índices en una base de datos MSSQL, el objetivo es poder ver en la pantalla del Microsoft SQL Managment una lista de las tablas y su fragmentación, pegar el siguiente código:
select t4.name as [schema_name] , t3.name as table_name , t2.name as index_name , t1.object_id , t1.index_id , t1.partition_number , t1.index_type_desc , t1.avg_fragmentation_in_percent , t1.avg_fragment_size_in_pages , t1.page_count from sys.dm_db_index_physical_stats(db_id(),NULL,NULL,NULL,'LIMITED' ) t1 inner join sys.objects t3 on (t1.object_id = t3.object_id) inner join sys.schemas t4 on (t3.schema_id = t4.schema_id) inner join sys.indexes t2 on (t1.object_id = t2.object_id and t1.index_id = t2.index_id ) where index_type_desc <> 'HEAP' order by t4.name,t3.name,t2.name,partition_number
En donde modificamos el use para indicar nuestra base y el order by para poder ordenar los campos según la preferencia.
Espero que sirva.
Saludos!