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操作怎么提高效率的主要内容,如果未能解决你的问题,请参考以下文章