重建数据库表所有索引

/***********************
重建数据库表所有索引
2006-06-12

先选择要修复的数据库
***********************/

DECLARE @name nvarchar(255)

--所有用户表游标
DECLARE authors_cursor CURSOR FOR 
Select [name]  from sysobjects where xtype='u' order by id
OPEN authors_cursor
FETCH NEXT FROM authors_cursor INTO @name

WHILE @@FETCH_STATUS = 0
BEGIN   
    --修复数据表索引
    DBCC DBREINDEX (@name, '', 70)

    -- Get the next author.
    FETCH NEXT FROM authors_cursor INTO @name
END

CLOSE authors_cursor
DEALLOCATE authors_cursor

go

 

/***********************
重建数据库表所有索引(SQL2005之后版本)
2012-06-12

先选择要修复的数据库
***********************/

DECLARE @name nvarchar(255)
--所有用户表游标
DECLARE authors_cursor CURSOR FOR 
Select [name]  
from sysobjects where xtype='u' order by id
OPEN authors_cursor

FETCH NEXT FROM authors_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
 print '正在重建表['+@name+']索引'   
    --修复数据表索引
 exec ('ALTER INDEX  ALL ON ['+@name+'] REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,STATISTICS_NORECOMPUTE = ON)');
    -- Get the next author.
    FETCH NEXT FROM authors_cursor INTO @name
END

CLOSE authors_cursor
DEALLOCATE authors_cursor

go

/***********************
重建指定表的索引
2006-06-12

先选择要修复的数据库
***********************/

--第一步:查看是否需要维护,查看扫描密度/Scan Density是否为100%
declare @table_id int
set @table_id=object_id('表名')
dbcc showcontig(@table_id)

--第二步:重构表索引
dbcc dbreindex('表名',pk_索引名,100)

--重做第一步,如发现扫描密度/Scan Density还是小于100%则重构表的所有索引
--并不一定能达100%。
dbcc dbreindex('表名','',100)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值