插入大量数据时,自增列怎么实现性能比较好?

saint13 2010-09-27 08:38:00
大家好,在某个ETL过程中,要往某表插入大量数据(千万条)时,
自增列怎么实现性能比较好?
多谢
...全文
247 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
心中的彩虹 2010-09-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 saint13 的回复:]
大家好,在某个ETL过程中,要往某表插入大量数据(千万条)时,
自增列怎么实现性能比较好?
多谢
[/Quote]

用序列
建序列的时候把cache 设置大点
saint13 2010-09-28
  • 打赏
  • 举报
回复
我是能实现类似SQL Server中identity(1,1)这样的列,即你插入的时候不管这个列,
但是,出于性能考虑,我想避免用触发器+Sequence来实现。
谢谢。
hailang1118 2010-09-28
  • 打赏
  • 举报
回复
用序列,一次提交要是多的话把序列的CACHE弄大一点。
zkl516321905 2010-09-28
  • 打赏
  • 举报
回复
个人推荐用Oracle的序列吧,序列毕竟是Oracle自带的针对自动增长数据的解决方案,性能应该能解决你这个问题,但也可能有其他解决方案。
minitoy 2010-09-28
  • 打赏
  • 举报
回复
这种还是直接把seq.nextval写到sql里比较好,触发器是比较影响效率的.
dollyxz 2010-09-28
  • 打赏
  • 举报
回复
这个应该比较好实现的,我过去是这样做的,用SQL Server 做过渡,完成自增,然后在导入到Oracle
ojuju10 2010-09-28
  • 打赏
  • 举报
回复
用序列吧,oracle没有自增列,都是用序列来实现的
epsilon-delta 2010-09-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 saint13 的回复:]

引用 5 楼 minitoy 的回复:

这种还是直接把seq.nextval写到sql里比较好,触发器是比较影响效率的.

我也是要避免使用触发器,
但是,如果在批量载入时,不是写sql语句,我无法使用seq.nextval啊。

[/Quote]

你使用什么实现ETL的?
saint13 2010-09-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 minitoy 的回复:]

这种还是直接把seq.nextval写到sql里比较好,触发器是比较影响效率的.
[/Quote]
我也是要避免使用触发器,
但是,如果在批量载入时,不是写sql语句,我无法使用seq.nextval啊。
wffffc 2010-09-27
  • 打赏
  • 举报
回复
用序列,cache设大点,no order
gelyon 2010-09-27
  • 打赏
  • 举报
回复
用序列来实现自增
create sequence seq Start with 1 increment by 1;

使用 select seq.nextval from dual;
huangdh12 2010-09-27
  • 打赏
  • 举报
回复
ETL 不知道 。 我有一种方法是用当前maxid +rownum 应该效率还行。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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