大数据量快速插入

wangzhe696 2009-07-23 11:29:09
insert /**//*+append*/ into gis select * from typhoon_insert_temp;
insert into gis select * from typhoon_insert_temp;



我看了下执行计划是一样的,为什么有的高手说上面的要快速一点呢?

而且/**//*+append*/ 在plsql中我怎么看他是被注释掉的?
...全文
270 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bencje 2009-07-26
  • 打赏
  • 举报
回复
批量插入 你可以试试用 BULK CONNECT 和 forall 结合起来使用
inthirties 2009-07-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 wangzhe696 的回复:]
insert /**//*+append*/ into gis select * from typhoon_insert_temp;
insert into gis select * from typhoon_insert_temp;


我看了下执行计划是一样的,为什么有的高手说上面的要快速一点呢?

而且/**//*+append*/  在plsql中我怎么看他是被注释掉的?
[/Quote]

你看的主要是执行计划里的执行路径吧,这个hint主要是 优化insert的时候,直接在数据块后面做append,从而会提高速度。对于执行路径没有差别。如果可以去掉目标表的index的话,也会提高insert速度。
vc555 2009-07-23
  • 打赏
  • 举报
回复
是/*+ append */
要想速度更快,根据具体情况,可配合nologging和parallel来。
luanfeng2008 2009-07-23
  • 打赏
  • 举报
回复
/*+APPEND* 配合NOLOGGING 效果更好
给你附带另外一些东西 网上可以搜到


24. /*+USE_HASH(TABLE)*/
将指定的表与其他行源通过哈希连接方式连接起来.
例如:
SELECT /*+USE_HASH(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

25. /*+DRIVING_SITE(TABLE)*/
强制与ORACLE所选择的位置不同的表进行查询执行.
例如:
SELECT /*+DRIVING_SITE(DEPT)*/ * FROM BSEMPMS,DEPT@BSDPTMS WHERE BSEMPMS.DPT_NO=DEPT.DPT_NO;
suncrafted 2009-07-23
  • 打赏
  • 举报
回复
1、2楼说的有理

17,377

社区成员

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

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