重庆oracle认证培训机构

新闻分类

产品分类

热门关键词

联系我们

企业名称:重庆赛烽达科技有限公司

联系人:程老师

手机:13372708242

邮箱:xqzhang@saifengda.com

网址:www.cqora.com

地址:重庆石桥铺高创锦业17-3

oracle ocp课程分享SQL优化案例

您的当前位置: 首 页 >> 新闻资讯 >> 常见问题

oracle ocp课程分享SQL优化案例

发布日期:2018-08-26 作者: 点击:

客户反映过程中的SQL语句查询不出结果,着急出结果,SQL如下:


收集相关信息

FM04_DEPT             大概500行
TB_CONS@DB_LK         大概600万,无有效可用条件
TB_RCA_CTRL_DET@DB_LK 大概300万,REMOTE_DATE 为DATE类型有index

处理过程

首先过滤条件字段存在索引但是却被函数转换需改写SQL使用索引过滤数据量:



改写为:



这样可过滤因散列读引起的不必要的数据量。

然后看执行:






查不出结果!!


从原始的执行计划可以看到 
1
:cost值很大,执行计划不理想
2:hash 中间结果数据量很大,这个结果做为驱动表和TB_RCA_CTRL_DET过滤链接非常耗时,不合理。
3:两个远程表应该首先过滤数据才是呀!这样才合理。

优化思路:让TB_RCA_CTRL_DET表作为驱动表和TB_CONS进行连接,IN 操作会让子查询作为驱动表(EXISTS 操作相反),改写如下:



改写后的执行计划
1:首先TB_RCA_CTRL_DET的内部视图VW_NSO_1和TB_CONS进行NESTED LOOPS,TB_RCA_CTRL_DET通过时间索引数据量很小作为驱动表,合理。
2:然后FM04_DEPT小表做驱动和远程表嵌套的结果集做hash,合理。
3: 22秒查出结果


本文网址:http://www.cqora.com/news/487.html

关键词:重庆oracle培训,重庆oracleocp培训,甲骨文oracle认证培训机构

最近浏览:

报名咨询

点击咨询报名

赛烽达QQ群

赛烽达技术群

程老师

xxxxxxxxxx

加微信咨询

张老师微信.jpg

xqzhang@saifengda.com