1,查看索引碎片占用状况
SELECT OBJECT_NAME(ind.OBJECT_ID) AS TableName, ind.name AS IndexName, indexstats.index_type_desc AS IndexType, indexstats.avg_fragmentation_in_percent FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) indexstats INNER JOIN sys.indexes IND ON ind.object_id = indexstats.object_id AND ind.index_id = indexstats.index_id WHERE indexstats.avg_fragmentation_in_percent > 5 ORDER BY 1,2 DESC
---说明:为了获得最佳性能,avg_fragmentation_in_percent的值应尽可能接近零。
2,按照表批量重建索引
--USE TestDb --GO DECLARE @table_name VARCHAR(200) --查询数据库里的所有表名 DECLARE cursor_reindex CURSOR FAST_FORWARD READ_ONLY FOR SELECT distinct OBJECT_NAME(ind.OBJECT_ID) AS TableName FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) indexstats INNER JOIN sys.indexes IND ON ind.object_id = indexstats.object_id AND ind.index_id = indexstats.index_id WHERE indexstats.avg_fragmentation_in_percent > 5 and ind.name is not null --使用游标遍历表列表 OPEN cursor_reindex FETCH NEXT FROM cursor_reindex INTO @table_name WHILE @@FETCH_STATUS = 0 BEGIN --开始重建表索引 DBCC DBREINDEX(@table_name) --DBCC DBREINDEX(@table_name, '', 90) FETCH NEXT FROM cursor_reindex INTO @table_name END CLOSE cursor_reindex DEALLOCATE cursor_reindex
欢迎转载,请注明来自白菜卖故事>>本文地址:http://www.bcmgs.com/797
0 还没人赞过...