php 子查询优化,语句优化,如何控制子查询先执行
语句如下:
select
decode(sum(v.period_prem), null, 0, sum(v.period_prem)) from
(select pf.list_id, nvl(pf.period_prem, 0) period_prem
from t_product_fee pf,
t_contract_master cm,
t_product_life pl,
t_policy_fee pfe
where pf.policy_id = cm.policy_id
and cm.validate_date <
ADD_MONTHS(to_date('201005', 'yyyymm'), -13)
and cm.validate_date >=
ADD_MONTHS(to_date('201005', 'yyyymm'), -14)
and pf.fee_id = pfe.fee_id
and pfe.received_time >=
ADD_MONTHS(cm.validate_date, 12)
and pfe.received_time <
ADD_MONTHS(to_date('201005', 'yyyymm'), 1)
and pfe.receiv_status = 2
and pf.charge_type = 1
and pf.product_id = pl.product_id
and (pl.period_type <> 2 or exists
(select 1
from t_life_basic cc
where cc.coverage_year <> 1
and cc.product_id = pl.product_id))
and pf.fee_type in (43, 47, 48)
and pf.policy_year = 2
and cm.prem_status not in (2, 3, 4)
and cm.nb_agency_id in
(select agency_id
from t_agency
start with agency_id = 121
Connect By Prior agency_id = parent_id)) v
where pkg_life_calc_basic_comm.f_is_effect(v.list_id) = '0';
虽然这样写了但是最后的条件pkg_life_calc_basic_comm.f_is_effect(v.list_id) = '0'还是在第一步就执行了执行计划如下:
Plan hash value: 1942344324
----------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
----------------------------------------------------------------------------------------------------
| 1 | SORT AGGREGATE | | 1 | 1 | 1 |00:00:09.43 | 1298K|
|* 2 | FILTER | | 1 | | 0 |00:00:09.43 | 1298K|
|* 3 | HASH JOIN SEMI | | 1 | 1 | 0 |00:00:09.43 | 1298K|
| 4 | NESTED LOOPS | | 1 | 1 | 79 |00:00:10.02 | 1298K|
| 5 | NESTED LOOPS | | 1 | 1 | 79 |00:00:10.01 | 1298K|
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
| 6 | NESTED LOOPS | | 1 | 5 | 85 |00:00:10.23 | 1297K|
|* 7 | TABLE ACCESS FULL | T_PRODUCT_FEE | 1 | 22 | 19155 |00:00:09.16 | 1259K|
|* 8 | TABLE ACCESS BY INDEX ROWID| T_CONTRACT_MASTER | 19155 | 1 | 85 |00:00:00.42 |
|* 9 | INDEX UNIQUE SCAN | PK_T_CONTRACT_MASTER | 19155 | 1 | 19155 |00:00:00.18 | 19157 |
|* 10 | TABLE ACCESS BY INDEX ROWID | T_POLICY_FEE | 85 | 1 | 79 |00:00:00.01 | 25
|* 11 | INDEX UNIQUE SCAN | PK_T_POLICY_FEE | 85 | 1 | 85 |00:00:00.01 | 172 |
| 12 | TABLE ACCESS BY INDEX ROWID | T_PRODUCT_LIFE | 79 | 1 | 79 |00:00:00.01 | 81 |
|* 13 | INDEX UNIQUE SCAN | PK_T_PRODUCT_LIFE | 79 | 1 | 79 |00:00:00.01 | 2 |
| 14 | VIEW | VW_NSO_1 | 1 | 58 | 54 |00:00:00.01 | 23 |
|* 15 | FILTER | | 1 | | 54 |00:00:00.01 | 23 |
|* 16 | CONNECT BY WITH FILTERING | | 1 | | 54 |00:00:00.01 | 23 |
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
| 17 | TABLE ACCESS BY INDEX ROWID| T_AGENCY | 1 | | 1 |00:00:00.01 | 2 |
|* 18 | INDEX UNIQUE SCAN | PK_T_AGENCY | 1 | 1 | 1 |00:00:00.01 | 1 |
|* 19 | HASH JOIN | | 3 | | 53 |00:00:00.01 | 21 |
| 20 | CONNECT BY PUMP | | 3 | | 54 |00:00:00.01 | 0 |
| 21 | TABLE ACCESS FULL | T_AGENCY | 3 | 58 | 177 |00:00:00.01 | 21 |
| 22 | TABLE ACCESS FULL | T_AGENCY | 0 | 58 | 0 |00:00:00.01 | 0 |
|* 23 | INDEX RANGE SCAN | UNI_LIFE_BASIC__PRODUCT_INFO | 0 | 39 | 0 |00:00:00.01 | 0 |
Predicate Information (identified by operation id):
---------------------------------------------------
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
2 - filter((TO_NUMBER("PL"."PERIOD_TYPE")<>2 OR IS NOT NULL))
3 - access("CM"."NB_AGENCY_ID"="$nso_col_1")
7 - filter(("PF"."POLICY_YEAR"=2 AND INTERNAL_FUNCTION("PF"."FEE_TYPE") AND TO_NUMBER("PF"."CHARG
"PKG_LIFE_CALC_BASIC_COMM"."F_IS_EFFECT"("PF"."LIST_ID")=0))
8 - filter(("CM"."NB_AGENCY_ID" IS NOT NULL AND "CM"."VALIDATE_DATE"
hh24:mi:ss') AND "CM"."PREM_STATUS"<>2 AND "CM"."VALIDATE_DATE">=TO_DATE('2009-03-01 00:00:00
hh24:mi:ss') AND ADD_MONTHS(INTERNAL_FUNCTION("CM"."VALIDATE_DATE"),12)
hh24:mi:ss') AND "CM"."PREM_STATUS"<>3 AND "CM"."PREM_STATUS"<>4))
9 - access("PF"."POLICY_ID"="CM"."POLICY_ID")
10 - filter((TO_NUMBER("PFE"."RECEIV_STATUS")=2 AND "PFE"."RECEIVED_TIME"
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
'yyyy-mm-dd hh24:mi:ss') AND "PFE"."RECEIVED_TIME">=ADD_MONTHS(INTERNAL_FUNCTION("CM"."VALIDA
11 - access("PF"."FEE_ID"="PFE"."FEE_ID")
13 - access("PF"."PRODUCT_ID"="PL"."PRODUCT_ID")
15 - filter((TO_DATE('2009-04-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')>TO_DATE('2009-03-01 00:00:00'
hh24:mi:ss') AND TO_DATE('2009-03-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
hh24:mi:ss')))
16 - filter("AGENCY_ID"=121)
18 - access("AGENCY_ID"=121)
19 - access("PARENT_ID"=NULL)
23 - access("CC"."PRODUCT_ID"=:B1)
filter("CC"."COVERAGE_YEAR"<>1)
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
注意第7步啊
我就是不想"PKG_LIFE_CALC_BASIC_COMM"."F_IS_EFFECT"("PF"."LIST_ID")=0 如此早的执行,
想等到子查询完成后在执行,这个是调用一个方法,返回结果越多,越慢,最后执行是最好的。
有那些方法办到啊,谢谢.我加了提示,建了视图 没用可能提示加得不对。望指点,谢谢!
php 子查询优化,语句优化,如何控制子查询先执行相关推荐
- Mysql子查询优化技术
1:子查询优化的思路 1.1 子查询合并(Subquery Coalescing) 在某些条件下(语义等价:两个查询块产生同样的结果集),多个子查询能够合并成一个子查询(合并后还是子查询,可以通过其 ...
- 8、查询优化-关联查询优化-子查询优化-Order by 关键字优化-Group by 关键字优化-双路排序和单路排序
8.查询优化 8.1.准备数据 8.1.1.建表 CREATE TABLE `dept` (`id` INT ( 11 ) NOT NULL AUTO_INCREMENT,`deptName` VAR ...
- 数据库面试题【十八、优化关联查询优化子查询优化LIMIT分页优化UNION查询优化WHERE子句】
优化关联查询: 确定ON或者USING子句中是否有索引. 确保GROUP BY和ORDER BY只有一个表中的列,这样MySQL才有可能使用索引. 优化子查询: 用关联查询替代 优化GROUP BY和 ...
- Mysql 关联查询的优化 及 子查询优化
Mysql 关联查询的优化 left join ①EXPLAIN SELECT * FROM class LEFT JOIN book ON class.card = book.card; ②如何优化 ...
- mysql自带查询优化_MySQL之select in 子查询优化的实现
下面的演示基于MySQL5.7.27版本 一.关于MySQL子查询的优化策略介绍: 子查询优化策略 对于不同类型的子查询,优化器会选择不同的策略. 1. 对于 IN.=ANY 子查询,优化器有如下策略 ...
- mysql semi join_技术分享 | MySQL 子查询优化
作者:胡呈清 爱可生 DBA 团队成员,擅长故障分析.性能优化,个人博客:https://www.jianshu.com/u/a95...,欢迎讨论. 本文来源:原创投稿 *爱可生开源社区出品,原创内 ...
- mysql子查询缺点_[慢查优化]慎用MySQL子查询,尤其是看到DEPENDENT SUBQUERY标记时
它的执行计划如下,请注意看关键词"DEPENDENT SUBQUERY": id select_type table type poss ...
- mysql 子查询优化一例
2019独角兽企业重金招聘Python工程师标准>>> 写在前面的话: 在慢查优化1和2里都反复强调过 explain 的重要性,但有时候肉眼看不出 explain 结果如何指导优化 ...
- python mongodb查询速度优化_Mongodb 3 查询优化(语句优化、建索引)
一.explain(),语句分析工具 MongoDB 3.0之后,explain的返回与使用方法与之前版本有了很大的变化,介于3.0之后的优秀特色和我们目前所使用给的是3.0.7版本,本文仅针对Mon ...
最新文章
- [转]C++基础:C++的结构struct
- pip install whl
- MVCWebForm对照学习:传值方式
- 简单的总是好的,在这个复杂的世界: java simple log
- ASP.NETAPI跨域设置(超简易)
- kong安装配置手册
- 小米 pegasus_使用Google的Pegasus库生成摘要
- Linux wc命令用于计算字数。
- 会员登录 php,php $_SESSION会员登录实例分享
- java int sum 0 i_【亲和数】 (Java代码)
- flann中关于数据的stride
- 视频编解码(二):编解码器基础知识
- Qt5学习笔记之串口助手三:打包成Windows软件
- [云原生专题-11]:容器 - 如何构建自己的docker镜像:Docker Dockerfile
- matlab中uigetfile命令的应用
- c语言中整型32768输出是多少,c语言中不合法的整型常数是32768为什么 – 手机爱问...
- 8月新亲测完美短视频点赞系统支持抖音+快手+刷宝+微视等所有主流短视频点赞/关注/评论系统源码
- 抖音播放量突然被限流降权是什么原因
- fedora如何隐藏顶部状态栏_桌面便签如何始终保持显示,便签如何在桌面显示
- 计算机专业硕士初次认定工程师,深圳职称初次认定条件(初级、中级)