数据仓库中的merge into 和 delete + insert into

being21 2010-06-01 06:52:08
一个数据仓库的应用,每天增量加载到全量表。符合merge into 的要求。
但是考虑merge的update操作会比较慢,于是改成了
delete from table where exists```
insert into
两步操作。
性能反而下降很大。
原来半个小时的脚本,现在上升到3个小时。
每天增量不稳定 2-500万,有两天会比较大,到百万级别,平时都在几十万
全量表数据在1300万左右

问:这是为什么?
应该采取哪种操作?

从现实的检验来看,merge into 的性能要好于第二种方案。
...全文
1431 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhugefung 2011-10-27
  • 打赏
  • 举报
回复
时间都花在delete from table where exists```
上了
being21 2010-09-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 etsilence 的回复:]

LZ你想想,如果用merge into都比delete+insert要慢,那要merge into干什么呢?
[/Quote]
merge into == insert into + update

如果是要删除一些记录,merge 我们现在的 9i 版本是没有delete 的
别的版本不知道是不是
lzbbob1985 2010-06-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wh62592855 的回复:]
每个系统的情况都不太一样 不能很确切的说哪一种方法更好
按照楼主所描述的 既然merge性能好 那么为什么不用merge非要去delete + insert呢

有的数据仓库环境会使用truncate + insert
[/Quote]

恩 我们这边就是 truncate + insert
wh62592855 2010-06-01
  • 打赏
  • 举报
回复
每个系统的情况都不太一样 不能很确切的说哪一种方法更好
按照楼主所描述的 既然merge性能好 那么为什么不用merge非要去delete + insert呢

有的数据仓库环境会使用truncate + insert
kingkingzhu 2010-06-01
  • 打赏
  • 举报
回复
而且高水位线上去了 查询也会变慢
iqlife 2010-06-01
  • 打赏
  • 举报
回复
肯定MERGE INTO啊,你DELETE 且不说速度原因,你的HWM也会只高不低...
ojuju10 2010-06-01
  • 打赏
  • 举报
回复
如果重复的记录,需要update的记录比较多,第一种比较好

如果重复的记录,不多,用merge比较好
ojuju10 2010-06-01
  • 打赏
  • 举报
回复
楼主是不是有索引,如果有索引,先删除索引后,再重新创建

索引严重影响DML的效率


etsilence 2010-06-01
  • 打赏
  • 举报
回复
LZ你想想,如果用merge into都比delete+insert要慢,那要merge into干什么呢?

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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