oracle 大量数据insert操作怎么提高效率

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 大量数据insert操作怎么提高效率相关的知识,希望对你有一定的参考价值。

一般实际使用过程中,很少用大批量的INSERT 操作的
INSERT操作会占用数据库的REDO空间,没插入一条会写一条回滚记录 ,所以很慢
如果是从一个数据库导入到另外一个数据库,可以用dmp文件来实现导入导出,
如果是从EXCEL里面导入到数据库里面
可以直接只用复制粘贴的方式来走
如果是从一张表转移到另外一张表,可以通过insert into 表1 select * from 表2 的方式
参考技术A 1、使用hint提示:/*+append*/,减少redo的生成
2、临时disable掉表上的索引,约束,触发器等
3、系统压力不大多cpu情况下,可以考虑开并发
4、可以考虑单独建一个回滚段给这个事务使用
参考技术B redo日志组多加几个并且扩大

Oracle大量数据查询优化

比如sql为“select name from table”name字段名,table表名如果数据量很大 几百万的有什么优化的方法数据库是Oracle的

参考技术A 首先,对语句进行优化,不要尽量不要写过于复杂的嵌套查询,当需要的时候,后面的子查询数量应为较大的数据。因为SQL是从右至左的查询,先查大的数据。然后建立索引,对经常查到的条件字段 例如 时间 where 月份 = 1月 这样的语句就应该建立所以 来提高效率。对于较复杂的查询应建立组合索引。横纵向切割表。对于大数据量,上百万条的数据可以对其进行横向切割。比如按时间的月份进行切割,或者按照其他方式来切割表,达到快速查询的目的。减少信息的检索量。 参考技术B 1、在表上建分区;
2、建索引;
3、如果是exedata平台,不要用索引,尽量少用hint;
4、用并行;
参考技术C 1、name上建立索引
2、将表table在线重定义为分区表,在name列上使用hash分区或者range分区
参考技术D create index(es). but, you should have the "where clause" in the statement to use the index

以上是关于oracle 大量数据insert操作怎么提高效率的主要内容,如果未能解决你的问题,请参考以下文章

ORACle中对于数据量庞大的表如何用delete+insert来代替update语句操作步骤或者请举例说明

往数据库里添加数据,update和insert哪个效率高

oracleinsert怎么快速对应select

mysql 百万级的表怎么处理

Oracle大量数据查询优化

oracle数据库中nvl可以用于insert语句中吗?