繁体   English   中英

Oracle SQL迁移数据优化

[英]Oracle SQL Migrate Data Optimization

我有三个表UserTable,UserTablebBackUp和UserBlackList。 每个表大约有3500万个数据。

我想将每个tupple从UserTable迁移到UserTablebBackUp,其中entry不在UserBlackList中。 创建脚本如下。 您有优化此脚本的方法吗? 否则那是最好的一个? 谢谢。

insert /*+APPEND+*/ INTO UserTablebBackUp (id_backup) select id from UserTable 
        where id not IN (SELECT id from UserBlackList);
insert /*+APPEND+*/ INTO UserTablebBackUp(id_backup) select a.id from usertable a
left outer join userblacklist b on a.id=b.id where b.id is null 

它应该更快...

并行 3500万行可以使您从并行执行中受益。 但是,有很多要求,例如企业版,并行设置,合理的硬件配置,足够的资源等。

如果您使用的是11gR2,则可能很简单:

insert /*+ APPEND PARALLEL*/
INTO UserTablebBackUp (id_backup) select id from UserTable 
where id not IN (SELECT id from UserBlackList);

直接路径写入您可能已经知道了,但是值得仔细检查。
仅APPEND提示并不总是足够的,直接路径写有很多限制。 如果您使用的是直接路径插入,则应该在执行计划中看到LOAD AS SELECT ,而不是LOAD TABLE CONVENTIONAL 如果仍在使用常规插入,请参阅《 SQL语言参考》以了解一些限制,以及此有用的nologging设置矩阵

即使是这样简单的查询,也应始终发布解释计划。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM