重构表索引
重构表的索引,非常费时的,因此只能在需要时进行。可以通过DBCC SHOWCONTIG来判断是否需要重构表的索引。
DBCC SHOWCONTIG用法
下面举例来说明DBCC SHOWCONTIG和DBCC REDBINDEX的使用方法。以应用程序中的Employee数据表作为例子,在 SQL Server的Query analyzer输入命令:
declare @tid int
set @tid=object_id('bcc')
dbcc showcontig(@tid)
输出结果:
DBCC SHOWCONTIG 正在扫描 'bcc' 表...
表: 'bcc' (2105058535);索引 ID: 0,数据库 ID: 33
已执行 TABLE 级别的扫描。
- 扫描页数................................: 2902628
- 扫描区数..............................: 362849
- 区切换次数..............................: 362848
- 每个区的平均页数........................: 8.0
- 扫描密度 [最佳计数:实际计数].......: 99.99% [362829:362849]
- 区扫描碎片 ..................: 0.08%
- 每页的平均可用字节数.....................: 734.9
- 平均页密度(满).....................: 90.92%
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
通过分析这些结果可以知道该表的索引是否需要重构。如下描述了每一行的意义:
信息 描述
扫描页数: 表或索引中的长页数
扫描区数: 表或索引中的长区页数
区切换次数:遍历页时从一个区域到另一个区域的次数
每个区的平均页数: 相关区域中的页数
扫描密度 [最佳计数:实际计数]:’最佳计数‘是连续链接时的理想区域改变数,‘实际计数’是实际区域改变数,‘扫描密度’ 为100%表示没有分块。
区扫描碎片: 扫描索引页中失序页的百分比
每页的平均可用字节数: 扫描页面中平均自由字节数
平均页密度(满): 平均页密度,表示页有多满
从上执行结果看,最佳计数=实际计数,这表明BCC表不需要重构表索引。若不等的话,则视差异决定是否重建
附重构表sql DBCC DBREINDEX。
3. DBCC DBREINDEX 用法
重建指定数据库中表的一个或多个索引。
语法
DBCC DBREINDEX
( [ 'database.owner.table_name'
[ , index_name
[ , fillfactor ]
]
]
)
参数
'database.owner.table_name'
是要重建其指定的索引的表名。数据库、所有者和表名必须符合标识符的规则。有关更多信息,请参见使用标识符。如果提供 database 或 owner 部分,则必须使用单引号 (') 将整个 database.owner.table_name 括起来。如果只指定 table_name,则不需要单引号。
index_name
是要重建的索引名。索引名必须符合标识符的规则。如果未指定 index_name 或指定为 ' ',就要对表的所有索引进行重建。
fillfactor
是创建索引时每个索引页上要用于存储数据的空间百分比。fillfactor 替换起始填充因子以作为索引或任何其它重建的非聚集索引(因为已重建聚集索引)的新默认值。如果 fillfactor 为 0,DBCC DBREINDEX 在创建索引时将使用指定的起始 fillfactor。
--ext
dbcc dbreindex('spc.dbo.bcc','',90)