重建索引

navy887 2009-09-28 03:18:40
这个数据库已经使用有很长时间了,数据量也比较大,现在想整理下索引,希望能提供些方法。

另外:重建索引和整理索引碎片哪个更合适些?对数据库有没有危险?
...全文
377 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
navy887 2009-09-29
  • 打赏
  • 举报
回复
多谢大家的帮助,根据提供的帮助,我整理了一下,另发一帖。
nzperfect 2009-09-28
  • 打赏
  • 举报
回复
2000的可选择性就小了。
navy887 2009-09-28
  • 打赏
  • 举报
回复
我是2000的。。
-狙击手- 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 perfectaction 的回复:]
引用 5 楼 navy887 的回复:
perfectaction的意思是重建索引的时候必须要停止数据库吗?

如果是这样的话,那看来重建这条路是行不通了。数据库不能停止的。


如果是sql server 2005/2008 企业版,可以采用在线的索引重建,但如果访问量比较大,还是会有影响。
索引重组也会对用户访问有影响,并且重组不更新统计信息,这样对执行计划的优化并未起到多少作用。
[/Quote]

要是2005/2008,在线最好,否则聚集会引起其它索引更新,相当的痛苦
navy887 2009-09-28
  • 打赏
  • 举报
回复
疑问。。
navy887 2009-09-28
  • 打赏
  • 举报
回复
。。。
navy887 2009-09-28
  • 打赏
  • 举报
回复
多谢各位指点,按照各位提供方法处理,碰到2个疑问

疑问1.DBCC indexdefrag整理的是逻辑碎片还是扩展盘区碎片?
刚才的测试结果:
整理前:
- 逻辑扫描碎片.................................: 50.23%
- 扩展盘区扫描碎片.............................: 53.09%

整理后:
- 逻辑扫描碎片.................................: 0.01%
- 扩展盘区扫描碎片.............................: 57.30%

按测试结果来看整理的是逻辑碎片。那扩展盘区碎片是指什么,需要做什么处理吗?

疑问2.
碎片整理以后发现该表的数据使用的空间减少,索引使用的空间不变,这个怎么回事?
整理前该表占用空间:数据423968KB,索引86520KB
整理后该表占用空间:数据317608KB,索引86520KB
firecc05 2009-09-28
  • 打赏
  • 举报
回复
用 DBCC SHOWCONTIG 表名 跑一下,
如果碎片率低于30%用INDEXDEFRAG,如果高于30%用DBREINDEX
nzperfect 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 navy887 的回复:]
perfectaction的意思是重建索引的时候必须要停止数据库吗?

如果是这样的话,那看来重建这条路是行不通了。数据库不能停止的。
[/Quote]

如果是sql server 2005/2008 企业版,可以采用在线的索引重建,但如果访问量比较大,还是会有影响。
索引重组也会对用户访问有影响,并且重组不更新统计信息,这样对执行计划的优化并未起到多少作用。
xupeihuagudulei 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 fredrickhu 的回复:]
引用 6 楼 navy887 的回复:
DBCC DBREINDEX
DBCC INDEXDEFRAG

现在正在考虑采用拿种方式。。
想了解下两种方式的优缺点


推荐DBCC indexdefrag
[/Quote]顶
--小F-- 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 navy887 的回复:]
DBCC DBREINDEX
DBCC INDEXDEFRAG

现在正在考虑采用拿种方式。。
想了解下两种方式的优缺点
[/Quote]

推荐DBCC indexdefrag
navy887 2009-09-28
  • 打赏
  • 举报
回复
DBCC DBREINDEX
DBCC INDEXDEFRAG

现在正在考虑采用拿种方式。。
想了解下两种方式的优缺点
navy887 2009-09-28
  • 打赏
  • 举报
回复
perfectaction的意思是重建索引的时候必须要停止数据库吗?

如果是这样的话,那看来重建这条路是行不通了。数据库不能停止的。
--小F-- 2009-09-28
  • 打赏
  • 举报
回复
DBCC indexdefrag
DBCC indexdefrag
/*
对表或视图上的索引和非聚集索引进行碎片整理
indexdefrag ({dbid | dbname | 0}, {tableid | tablename}, {indid | indname})
*/
--小F-- 2009-09-28
  • 打赏
  • 举报
回复
DBCC dbreindex
nzperfect 2009-09-28
  • 打赏
  • 举报
回复
如果可以在某断时间内停止对数据库的访问,当然重建是最好的选择。
rucypli 2009-09-28
  • 打赏
  • 举报
回复
ONLINE = on

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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