Оптимизация индексов mssql вариант 2
select 
	OBJECT_NAME(object_id) object_name, 
	(select name from sys.indexes i where i.object_id = pi.object_id and i.index_id = pi.index_id) as index_name,
	(
		'ALTER INDEX ['+
		(select name from sys.indexes i where i.object_id = pi.object_id and i.index_id = pi.index_id)+
		'] ON [dbo].['+
		OBJECT_NAME(object_id)+
		'] REBUILD WITH (SORT_IN_TEMPDB = ON);'+
		' -- avg frag='+cast(pi.avg_fragmentation_in_percent as nvarchar)+'%'
	) as rebuild_sql,
	*
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) pi
WHERE 
	avg_fragmentation_in_percent > 2
	and index_type_desc not in ( 'HEAP' )
order by avg_fragmentation_in_percent desc
;
--select * from sys.indexes i where i.object_id = 248492064;