12
返回列表 发新帖
楼主: billxq11

[原创] oracle view 谓词推入

[复制链接]
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
11#
发表于 2016-1-7 14:26 | 只看该作者
billxq11 发表于 2016-1-7 12:04
会话已更改。

SQL> SELECT COUNT(DISTINCT T_DJ.DANW_ID) KEHDJ_NUM,

非常感谢楼主的反馈。
可以看到,第一种写法中,虽然,调换了条件中view_c和view_a及view_b等号两边的顺序,cbo依然能进行很好的转换,说明等号前后顺序不是影响这里的因素。
第二种写法中,调换了条件中,view_a的连接对象,由原来的view_c换为view_b,资源消耗依然很高,谓词也未推入view_b。

使用道具 举报

回复
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
12#
发表于 2016-1-7 14:33 | 只看该作者
billxq11 发表于 2016-1-7 12:06
SQL> SELECT COUNT(DISTINCT T_DJ.DANW_ID) KEHDJ_NUM,
  2         COUNT(DISTINCT T_XJ.SHANGP_ID) PI ...

这种写法中,调整view_c连接条件的顺序,谓词也并未推入view_b。
由上可以看出,必须保证view_c分别和view_b和view_a的连接条件,并保证连接条件在where子句中的顺序,CBO才能进行很好的转换和调优,这也许能说明,CBO在解析SQL时,反方向解析的。当CBO不能对SQL进行很好的转换时,连接的对象和连接顺序也许就成了性能的关键因素。
再次感谢楼主的分享和反馈。

使用道具 举报

回复
论坛徽章:
0
13#
 楼主| 发表于 2016-1-11 13:41 | 只看该作者
sqysl 发表于 2016-1-7 14:33
这种写法中,调整view_c连接条件的顺序,谓词也并未推入view_b。
由上可以看出,必须保证view_c分别和vi ...

也谢谢你的分析及指点。

使用道具 举报

回复
论坛徽章:
47
蒙奇·D·路飞
日期:2017-03-27 08:04:23马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11一汽
日期:2013-09-01 20:46:27复活蛋
日期:2013-03-13 07:55:232013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:322012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20
14#
发表于 2016-1-12 01:11 | 只看该作者
Is it possible to create a small reproducible case starting with "create table ..."? I'd like to try this on a database I have here.

使用道具 举报

回复
论坛徽章:
8
马上有房
日期:2014-10-17 16:12:52优秀写手
日期:2014-12-06 06:00:14暖羊羊
日期:2015-03-04 14:54:572015年新春福章
日期:2015-03-06 11:59:47目光如炬
日期:2015-06-07 22:00:00秀才
日期:2015-07-14 09:44:30秀才
日期:2015-11-23 09:48:22狮子座
日期:2016-01-25 13:38:55
15#
发表于 2016-2-6 14:09 | 只看该作者
Yong Huang 发表于 2016-1-12 01:11
Is it possible to create a small reproducible case starting with "create table ..."? I'd like to try ...

Your English is well~

使用道具 举报

回复
论坛徽章:
3
秀才
日期:2017-01-20 11:04:31秀才
日期:2018-01-02 15:17:54秀才
日期:2018-01-02 15:29:29
16#
发表于 2016-4-14 09:11 | 只看该作者
mark一下,看来是仓储系统

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表