作为性能优化,我对数据库进行了索引重建。
我在@TABLE REBUILD WITH上使用了ALTER TABLE ALL(FILLFACTOR=@FILLFACTOR)。
我想把这个安排为代理工作。
现在我的要求是:
-
在重建索引之前,我需要将索引统计信息导出到csv文件
-
重建索引
-
重建索引后将索引导出到csv文件的统计信息。
我在代理作业中放置了重建索引脚本,并手动执行了索引统计信息查询,以查看代理作业之前和之后的状态。
我需要如何自动化
-
重建前的索引状态
-
重建
-
重新攻击后的统计。
我正在使用这个脚本进行统计。
DECLARE @DATABASE VARCHAR(10)= 'AdventureWorksDW2008'
SELECT OBJECT_NAME(IPS.OBJECT_ID) AS [TABLENAME],
SI.NAME AS [INDEXNAME],
IPS.INDEX_TYPE_DESC,
IPS.AVG_FRAGMENTATION_IN_PERCENT,
IPS.AVG_FRAGMENT_SIZE_IN_PAGES,
IPS.AVG_PAGE_SPACE_USED_IN_PERCENT,
IPS.RECORD_COUNT,
IPS.GHOST_RECORD_COUNT,
IPS.FRAGMENT_COUNT,
IPS.AVG_FRAGMENT_SIZE_IN_PAGES
FROM SYS.DM_DB_INDEX_PHYSICAL_STATS(DB_ID(N''+ @DATABASE +''), NULL, NULL, NULL , 'DETAILED') IPS
JOIN SYS.TABLES ST WITH (NOLOCK) ON IPS.OBJECT_ID = ST.OBJECT_ID
JOIN SYS.INDEXES SI WITH (NOLOCK) ON IPS.OBJECT_ID = SI.OBJECT_ID AND IPS.INDEX_ID = SI.INDEX_ID
WHERE ST.IS_MS_SHIPPED = 0
ORDER BY 1,5
为了重建。
ALTER TABLE ALL ON @table REBUILD WITH (FILLFACTOR = @fillfactor).
谢谢
婴儿车