有这样一个查询插入语句,如下:insert /*+append*/ into get_add_column_test
select a.*,row_number() over(partition by imei order by logtime) rn
from get_add_column3 a
where not exists (select 1 from tt_column c where a.imei=c.imei );get_add_column3 总共有4000多万条记录,tt_column 大概在300W左右的记录并且只有IMEI去重的数据。
因为这俩个表都是插入生成的临时表,所以都没有索引。原来使用半个小时差不多就能执行完了,现在要执行3个多小时,有时要用5个小时才执行完,求高手优化。
select a.*,row_number() over(partition by imei order by logtime) rn
from get_add_column3 a
where not exists (select 1 from tt_column c where a.imei=c.imei );get_add_column3 总共有4000多万条记录,tt_column 大概在300W左右的记录并且只有IMEI去重的数据。
因为这俩个表都是插入生成的临时表,所以都没有索引。原来使用半个小时差不多就能执行完了,现在要执行3个多小时,有时要用5个小时才执行完,求高手优化。
解决方案 »
- java程序去调用oracle的存储过程时出错
- 多表关联查询的连接条件问题
- 最近,想修改一个朋友公司ORACLE的配置参数。
- 存储过程返回OUT参数的游标问题!!!急,望牛人帮忙
- ORACLE 联机丛书?
- 10g开发的forms怎么获取客户端的IP?
- 请教:FPower10什么意思?
- 有无等价SQL SERVER的语句:select convert(varchar(20),getdate(),120),convert(varchar(20),dateadd(mi,30,getdate()),120)
- 今天30生日,散分
- 给定义的数组赋值,运行时提示有错误?
- linux7 安装oracleasm报错
- 为什么在oracle数据库中,写个function函数进行判定后返回值,只返回条件,没有返回结果
2,目标表最好定期重导或者TRUNCATE,因为append会加大碎片,时间久可能会越来越慢。