重构表索引

重构表的索引,非常费时的,因此只能在需要时进行。可以通过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) 

posted @ 2016-06-29 17:10  jeffery1010  Views(492)  Comments(0Edit  收藏  举报