请教一下 我这边 有一个存储封装了 表数据的采集任务
循环执行
insert /*+ APPEND*/into t (t.1,t.2)select /*+PARALLEL(a,4)*/ a.1,a.2,nvl((select c.2 from c where a.1 = c.1),1) from a where 1=1;大部分执行都很快 就是有一张表 7W多笔的数据执行了 50多分钟,同样7W多笔数据的表1秒钟就执行完了,这个问题出在哪里?
循环执行
insert /*+ APPEND*/into t (t.1,t.2)select /*+PARALLEL(a,4)*/ a.1,a.2,nvl((select c.2 from c where a.1 = c.1),1) from a where 1=1;大部分执行都很快 就是有一张表 7W多笔的数据执行了 50多分钟,同样7W多笔数据的表1秒钟就执行完了,这个问题出在哪里?
2,可能因为你加了并发,当时你的CPU实用率过高导致遇到瓶颈,需查看下CPU情况
3,你用了APPEND,可能你的表a高水位比较高或者表碎片比较大(行链接、行迁移导致),建议重导下表或者重建表
1.看了下查询速度7W多笔的数据1秒不到查询完成;
2.看了服务器上这条执行时间的CPU,使用率并不高7%左右
3.每次执行前都会 DROP TABLE a CASCADE CONSTRAINTS PURGE;再create table;
1.查询的错了,执行的是 select count(*) from (select a.1,a.2 from table); 应该不准确
把这个写成left join 跑的飞起