全面优化数据库(重建/整理索引)

中国风
博客专家认证
2007-03-29 05:21:14
重建/整理索引
DECLARE @table_name sysname
DECLARE @index_name sysname
DECLARE @syntax sysname
DECLARE ROY_table CURSOR FOR
SELECT name FROM sysobjects where xtype = 'u'
OPEN ROY_table
FETCH NEXT FROM ROY_table INTO @table_name
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE ROY_index CURSOR FOR
select sysindexes.name
from sysindexes,sysobjects
where sysobjects.id = sysindexes.id and
sysobjects.name = @table_name and
keycnt > 0
OPEN ROY_index
FETCH NEXT FROM ROY_index INTO @index_name
WHILE @@FETCH_STATUS = 0
BEGIN

SELECT @syntax = 'DBCC INDEXDEFRAG (0, '+@table_name+','+ @index_name+')'
EXEC (@syntax)
PRINT '数据表'+@table_name + '索引'++@index_name+'碎片整理完成'
FETCH NEXT FROM ROY_index INTO @index_name
END
CLOSE ROY_index
DEALLOCATE ROY_index
FETCH NEXT FROM ROY_table INTO @table_name
END
CLOSE ROY_table
DEALLOCATE ROY_table
...全文
1916 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
mike 2011-12-30
  • 打赏
  • 举报
回复
沒看懂,學習中
wuyiyouyang 2009-02-11
  • 打赏
  • 举报
回复
sql2005在线重建索引,但是对数据库的剩余数据空间和日志空间都有一定的要求,不过这些可以更改数据库model来实现
sql2000即便是在企业版的情况下可以在线重建,但是会锁表,所以也是要万全考虑才可以的。
w2jc 2007-12-01
  • 打赏
  • 举报
回复
要简单的话,在维护计划里面建重建索引的任务就可以了。

sql2005上建议使用 alter index,
DBCC INDEXDEFRAG
DBCC DBREINDEX
这两个命令已经被alter index取代。

DBCC INDEXDEFRAG 是整理索引碎片,但不能更新表的统计信息
DBCC DBREINDEX 是完全重建索引,并且自动更新统计信息,在条件允许的情况下,最好使用这个命令。而且这个命令在大表上的速度比DBCC INDEXDEGRAG快得多。

DBCC DBREINDEX 的最大限制是必须离线建索引(例外:2005企业版支持在线重建索引),所以在数据库不能断来用户连接的情况下,才退而求其次使用DBCC INDEXDEGRAG

zhouhuitong2005 2007-11-30
  • 打赏
  • 举报
回复
除了二楼的哥哥给了意见,其它几楼的都是看客嘛。哥哥们,说几句也行呀。比如你们遇到过这样子的问题没有呀。或是给个链接也成。
这个问题弄得我头都大了。
flashasp 2007-10-27
  • 打赏
  • 举报
回复
谢谢收藏
TT008 2007-09-25
  • 打赏
  • 举报
回复
Study
edplrh 2007-07-04
  • 打赏
  • 举报
回复
mark
xiaoku 2007-04-09
  • 打赏
  • 举报
回复
谢谢...
TopFans 2007-03-30
  • 打赏
  • 举报
回复
支持一个!
HHH20000 2007-03-30
  • 打赏
  • 举报
回复
感谢指导,帮顶
---涛声依旧--- 2007-03-30
  • 打赏
  • 举报
回复
DBCC INDEXDEFRAG
后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并应着手修改当前还在使用该功能的应用程序。 请改用 ALTER INDEX。
青锋-SS 2007-03-29
  • 打赏
  • 举报
回复
沙发

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧