SQL Server2005的索引重建

碎片是个很讨厌的东西,就像我们的记忆,时间长了,也容易变成碎片,不整理就会再也想不起来。数据库在设计时,为了提高查询的效率,引入索引的概念,就像分门别类的图书,记录一个地址,就知道东西放在哪儿,找起来更方便。但索引也是数据,需要地方存放,由于计算机存储的特点,时间一久这些数据也是东一块儿西一块儿,同样需要拾掇一下。

 

在SQL Server2000中,采用DBCC SHOWCONTIG/REDBINDEX来查看索引状态及重建索引,到了Sql Server2005,已经改用系统函数sys.dm_db_index_physical_stats对索引进行分析,使用 ALTER INDEX .. REORGANIZE 语句重新组织索引,使用 ALTER INDEX .. REBUILD 语句重建索引。以下为示例。

 

1、查看索引的碎片信息

USE AdventureWorks;
GO
SELECT a.index_id, name, avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats (DB_ID(), OBJECT_ID(N'Production.Product'),
NULL, NULL, NULL) AS a
JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id;
GO

这段语句可以查看表Production.Product的索引碎片。avg_fragmentation_in_percent 是个反应碎片情况的百分比,如果小于30,建议重新组织一下索引,如果大于30则应该重建了。

2、重建索引
ALTER INDEX ALL ON [dbo].[RecordTable]
REBUILD WITH (
SORT_IN_TEMPDB = ON

,STATISTICS_NORECOMPUTE = ON
,ONLINE = ON);

这段语句表示重建表RecordTable的所有索引,with后面跟了一些参数。

更详细的用法请参考SQL Server2005的联机丛书,搜索sys.dm_db_index_physical_stats。

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客行天下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值