各位大大:
外地的同事反馈说存储过程执行的效率很慢,希望我帮忙分析一下
具体情况如下:
在一个存储过程中建立了2张临时表,然后将2-3KW左右的数据量塞进了临时表中
接着对临时表做了索引,然后再对临时表进行了关联查询插入物理表,关联条件中只有临时表是大表,其他都是几十条数据的小表
在插入临时表及做索引的时候都很快,但是在最后一步的时候效率很慢,反馈说用户临时表空间是100/秒的速度读取。
请问我该怎么做?能帮忙分析一下原因么?
我暂时让他们把关联条件屏蔽掉小表关联,再一步步去添加关联条件的方式来尝试查找SQL上的问题。
谢谢!
临时表 a_TEMP的a1、a2和b_TEMP的b1、b2都是联合索引
关联的方式如下:
FROM session.a_TEMP T1 INNER JOIN session.b_TEMP T2 ON T1.a1 = T2.b1 AND T2.a2 = T1.b2
INNER JOIN c T3 ON T2.b3= T3.c1 LEFT JOIN d T6 ON T1.a3 = T6.d
INNER JOIN (SELECT * FROM e WHERE e1 = '123' AND e2= '156' ) T4 ON T1.a4= T4.e3
INNER JOIN (SELECT * FROM f WHERE f1= '123' AND f2= '840' ) T5 ON T1.a4= T5.f3
INNER JOIN (select * from g where SUBSTR(g1,1,3)='ABC') T7 ON TRIM(SUBSTR(T7.g3,4,20)) = T2.b4
收起