注册 登录
编程论坛 SQL Server论坛

有趣的故障

wsn 发布于 2006-12-05 11:10, 849 次点击
我开发一个医院管理系统时在一个数据表50W行记录,删除了20W无用数据后,所有操作(增,删,改,查)变得查当慢,有时一个UPDATE语句要等上N分钟。想尽一切方法无果后,无意中将A表进行
select * into b from a
drop talbe a
select * into a from b
drop talbe b
操作后速度恢复正常,原因不明。
7 回复
#2
angeloc2006-12-05 11:18
可能因为删除操作产生的数据物理空间变得不连贯(碎片)。重新生成表后使表空间连续,提高了查询速度。
#3
wsn2006-12-05 15:32
我也是这样想的
#4
bygg2006-12-05 16:37
这是表的优化问题吧..
#5
angeloc2006-12-05 17:02
当对象或记录从数据库中删除后,它们占用的空间将被标记为可用,可用于向数据库中添加数据。除非整页数据被完全删除,否则页便保持为部分填充状态。直到从数据库页上删除最后的数据或者压缩数据库后,数据库才会收缩。所以也可以用压缩指令完成页之间空闲空间的回收!
#6
jiweida2006-12-07 10:06
请问压缩指令如何写呀?
#7
棉花糖ONE2007-03-01 22:16
删除修改后都会造成随片,dbcc reindex重建索引,但是耗时多
DBCC INDEXDEFRAG
整理指定的表或视图的聚集索引和辅助索引碎片。
#8
wsn2007-03-03 17:13
谢谢大家的帮助
1