200万行记录的表删除某些数据时特别慢,怎么办

bigban 2003-02-23 04:31:20
有一张表a
id int
detailid int
detail text
index: id,detailid
有200万条记录左右,而且不断插入新的记录,使用
delete from a where id=10 and detailid<100删除100条记录时大概要2分钟
如何加快删除速度
请指教
...全文
318 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
gao 2003-03-11
  • 打赏
  • 举报
回复
如果单纯追求速度可以不要用delete 因为delete记日志,要用不记日志的删除命令好像是tran打头的命令
zhengyu17 2003-03-09
  • 打赏
  • 举报
回复
我也碰到了同样的问题,我系统内有一个表,到达800万条记录,且实时增长,要删除一个月的数据用delete from table_name where 特慢,已经根据情况建那索引了!
米多 2003-03-03
  • 打赏
  • 举报
回复
要频繁增加和删除记录的表,我认为还是尽量少建索引
clientwyc 2003-02-28
  • 打赏
  • 举报
回复
gz
emate 2003-02-27
  • 打赏
  • 举报
回复
gz
naiza 2003-02-26
  • 打赏
  • 举报
回复
"先删除索引,待删除后再重建索引。"
楼主要不断的增加数据记录,这种方法可行么?
edarw 2003-02-24
  • 打赏
  • 举报
回复
表分区应该不能解决问题吧,sybase分区主要是减少堆表的尾链竞争。
supershb 2003-02-24
  • 打赏
  • 举报
回复
看看我的测试记录:
表中有4000000条记录,删除其中3000000条记录,结果花了8分钟。
你的又花了多少时间呢?
wanghai 2003-02-24
  • 打赏
  • 举报
回复
ice2water(冰冻三尺) 的办法不错
qlqllu 2003-02-24
  • 打赏
  • 举报
回复
继续
zengpan_panpan 2003-02-24
  • 打赏
  • 举报
回复
分区的前提是有多个硬盘,谁又有那么多硬盘呢?
ice2water 2003-02-23
  • 打赏
  • 举报
回复
先删除索引,待删除后再重建索引。
MicroMouse 2003-02-23
  • 打赏
  • 举报
回复
把表分区!
zengpan_panpan 2003-02-23
  • 打赏
  • 举报
回复
这种删除,索引更新代价太大,肯定慢,如果id的索引是cluster的更痛苦。

如果你改一下索引,应该会好点。

第一个索引用(id,detailid)的复合索引,第二个用detailid。

至少用了复合的索引以后,按照你的delete的条件,访问的页会大大减小。

另外如果你的表是频繁增删的,有没有忘记定期update statistics?

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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