今天对之前描述的问题一条insert语句导致的性能问题分析(一) 进行了进一步的补充。
有一条insert语句的主要性能瓶颈在于insert子句中的查询语句,查询中的主要资源消耗在于对两个表进行了多次关联
语句主要的结构如下:
insert into xxxxx (select * from TEST_vip_new minus select * from TEST_vip_new_bak
) a left join TEST_vip_new_bak b
on a.cn=b.cn
对于这个test_vip_new和test_vip_new_bak我产生了疑问,觉得这个临时表test_vip_new_bak有些多余。带着这种思路分析,看起来逻辑很简单啊,于是就联系了开发的同学,一起讨论一番。
但是讨论完之后,还是让我有些不知所措。
首先,语句为什么要多次关联,自己做了一个小的测试,感觉这种关联方式还是有些多余。
SQL> create table a (id number);
Table created.
SQL> create table b (id number);
Table created.
SQL> insert into a values(1);
1 row created.
SQL> insert into a values(2);
1 row created.
SQL> insert into b values(1);
1 row created.
SQL> select * from a minus select * from b;
ID