oracle存储过程中的多表查询优化
时间:2011-09-09
来源:互联网
现在有表:A、B、C、D、E五张,其所有字段都为varchar2类型。
表A字段:a1,a2,a3,a4 ; 表B字段:b1,b2,b3,b4 ;
表C字段:c1,c2,c3,c4 ; 表D字段:d1,d2,d3,d4 ;
表E字段:e1,e2,e3,e4 ;
存储过程执行第一步,先进行5张表的联合查询:
表A通过a1=b1 and a2=b2和表B进行内连接,并且a3='3' and b3='3',结果记作RESULT_A;
表C通过c1=RESULT_A.a1 and c2=RESULT_A.b2和RESULT_A进行内连接,并且c4='4',结果记作RESULT_B;
表D通过d1=RESULT_B.b1 and d3=RESULT_B.b3和RESULT_B进行内连接,并且d4='4' and RESULT_B.c3='3'结果记作RESULT_C;
表E通过e1=RESULT_C.d1 and e2=RESULT_C.a4和RESULT_C进行内连接,并且e3='3'。结果记作RESULT_D
存储过程执行第二步,将上查询结果RESULT_D插入到新建表F中(表F结构省略)
由于5张表中的数据很大(至少50w),目前的想法:能否将上面两张表A、B的查询结果先存到临时表中,再让临时表和第三张表C查询,查询的结果再放到临时表中和第四张表D关联查询.....依次执行,最终结果存放到表F中。
各位还有没别的更好的优化方式??
表A字段:a1,a2,a3,a4 ; 表B字段:b1,b2,b3,b4 ;
表C字段:c1,c2,c3,c4 ; 表D字段:d1,d2,d3,d4 ;
表E字段:e1,e2,e3,e4 ;
存储过程执行第一步,先进行5张表的联合查询:
表A通过a1=b1 and a2=b2和表B进行内连接,并且a3='3' and b3='3',结果记作RESULT_A;
表C通过c1=RESULT_A.a1 and c2=RESULT_A.b2和RESULT_A进行内连接,并且c4='4',结果记作RESULT_B;
表D通过d1=RESULT_B.b1 and d3=RESULT_B.b3和RESULT_B进行内连接,并且d4='4' and RESULT_B.c3='3'结果记作RESULT_C;
表E通过e1=RESULT_C.d1 and e2=RESULT_C.a4和RESULT_C进行内连接,并且e3='3'。结果记作RESULT_D
存储过程执行第二步,将上查询结果RESULT_D插入到新建表F中(表F结构省略)
由于5张表中的数据很大(至少50w),目前的想法:能否将上面两张表A、B的查询结果先存到临时表中,再让临时表和第三张表C查询,查询的结果再放到临时表中和第四张表D关联查询.....依次执行,最终结果存放到表F中。
各位还有没别的更好的优化方式??
作者: xiaoranchenxi 发布时间: 2011-09-09
原始的方法是两表查询建一个试图,然后用视图再和第三张表联合查询。由于数据量级别较大,担心性能问题。。。
作者: xiaoranchenxi 发布时间: 2011-09-09
insert into f as
select [fields]
from a
join b on a.a1=b.b1 and a.a2=b.b2
join c on c.c1=a.a1 and c.c2=b.b2
join d on d.d1=b.b1 and d.d3=b.b3
join e on e.e1=d.d1 and e.e2=a.a4
where a.a3='3' and b.b3='3' and c.c4='4' and d.d4='4' and e.e3='3';
select [fields]
from a
join b on a.a1=b.b1 and a.a2=b.b2
join c on c.c1=a.a1 and c.c2=b.b2
join d on d.d1=b.b1 and d.d3=b.b3
join e on e.e1=d.d1 and e.e2=a.a4
where a.a3='3' and b.b3='3' and c.c4='4' and d.d4='4' and e.e3='3';
作者: nGX20080110 发布时间: 2011-09-09
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28