查看: 22300|回复: 16

[讨论] 对于执行计划的最右最上原则的一点疑惑

[复制链接]
论坛徽章:
1
优秀写手
日期:2014-02-27 06:00:13
跳转到指定楼层
1#
发表于 2014-3-1 14:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
  1. create table A(col1 number(4,0),col2 number(4,0), col4 char(30));
  2. create table B(col1 number(4,0),col3 number(4,0), name_b char(30));
  3. create table C(col2 number(4,0),col3 number(4,0), name_c char(30));
  4. create index inx_col12A on a(col1,col2);
复制代码
上面的是建表语句。然后执行查询:
  1. select A.col4
  2. from B, A, C
  3. where B.col3 = 10
  4. and A.col1 = B.col1
  5. and A.col2 = C.col2
  6. and C.col3 = 5
复制代码
其执行计划为下面的截图:

按照最右最上的原则,我认为应该是对C表的过滤应该先执行。
可是这里却先对B进行了过滤,难道C那个执行计划不是最右最上么?

还有下面截图中



  得到去除妨碍判断的索引扫描后的执行计划;为什么索引扫描会妨碍判断呢?

论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
2#
发表于 2014-3-1 14:57 | 只看该作者
有啥问题?这种方式除了标量子查询不符合这原则,其他的一般都可以

最右和最上是要结合起来看的,不是简单滴看最右就是最先执行,因为BUFFER SORT那个和TABLE ACCESS FULL B在同一级,所有上面的先执行,所以B的先执行,然后才是C的,而C的是先执行全表扫描,然后执行BUFFER SORT。

并不是BUFFER SORT在最右就最先执行。最上的意思是同级的,上面的最先执行,最右是最右边的最先执行。

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
3#
发表于 2014-3-1 15:03 | 只看该作者
你结合id,pid来看,也就是子先执行,再执行父(最右),但是同父的,上面的先执行(最上),两者要同时考虑。

如果看哪个最先执行,那就很容易了,从第一条id=0的,向下找,当它没有子孙的时候,它就是最先执行的

使用道具 举报

回复
论坛徽章:
1
优秀写手
日期:2014-02-27 06:00:13
4#
 楼主| 发表于 2014-3-1 18:49 | 只看该作者
dingjun123 发表于 2014-3-1 14:57
有啥问题?这种方式除了标量子查询不符合这原则,其他的一般都可以

最右和最上是要结合起来看的,不是简 ...

谢谢版主的回答,现在看对最右最上原则解释的比较清楚的应该是下面一段:
由上至下:在执行计划中一般含有多个节点,相同级别(或并列)的节点,靠上的优先执行,靠下的后执行
从右向左:在某个节点下还存在多个子节点,先从最靠右的子节点开始执行。

另外,那个PPT上说的索引扫描会妨碍判断是什么情况?

使用道具 举报

回复
论坛徽章:
737
季节之章:春
日期:2015-07-31 17:16:29ITPUB季度 技术新星
日期:2014-07-17 14:37:00季节之章:秋
日期:2015-07-31 17:16:14季节之章:夏
日期:2015-07-31 17:16:29股神
日期:2014-10-15 09:23:31衰神
日期:2014-10-20 22:47:12季节之章:冬
日期:2015-07-31 17:16:14红钻
日期:2014-12-16 17:51:41洛杉矶湖人
日期:2016-09-23 08:18:15布鲁克林篮网
日期:2016-09-23 08:17:18
5#
发表于 2014-3-1 19:38 | 只看该作者
rockpk008 发表于 2014-3-1 18:49
谢谢版主的回答,现在看对最右最上原则解释的比较清楚的应该是下面一段:
由上至下:在执行计划中一般含 ...

上面有文字说明啊
意思就是先不管索引扫描那部分,

使用道具 举报

回复
论坛徽章:
1
优秀写手
日期:2014-02-27 06:00:13
6#
 楼主| 发表于 2014-3-1 19:57 | 只看该作者
oracle_cj 发表于 2014-3-1 19:38
上面有文字说明啊
意思就是先不管索引扫描那部分,

多谢多谢,这个PPT太大了,我这没看仔细就发问,不是好习惯。

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
7#
发表于 2014-3-1 20:03 | 只看该作者
rockpk008 发表于 2014-3-1 18:49
谢谢版主的回答,现在看对最右最上原则解释的比较清楚的应该是下面一段:
由上至下:在执行计划中一般含 ...

没有看明白那上面写的,为什么先把index by rowid去掉的原因

执行计划很简单啊,入口就是树形结构的level最小的叶子节点


当然,有种情况特殊,标量子查询,用最有最上,是看不出来的,这是变种计划:

http://blog.chinaunix.net/uid-7655508-id-3707474.html

使用道具 举报

回复
论坛徽章:
1
优秀写手
日期:2014-02-27 06:00:13
8#
 楼主| 发表于 2014-3-1 21:51 | 只看该作者
dingjun123 发表于 2014-3-1 20:03
没有看明白那上面写的,为什么先把index by rowid去掉的原因

执行计划很简单啊,入口就是树形结构的le ...

谢谢版主,标量子查询是不是用的比较少,现在在做国网的一个项目的实施工作,目前来看没有看到标量子查询

使用道具 举报

回复
论坛徽章:
5
优秀写手
日期:2013-12-18 09:29:112014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08马上有钱
日期:2014-10-17 12:56:56处女座
日期:2015-08-30 22:09:39
9#
发表于 2014-3-2 10:57 | 只看该作者
谢谢兔子大哥,标量查询的执行计划不能按照常理来分析,感谢,

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
10#
发表于 2014-3-2 12:04 | 只看该作者
rockpk008 发表于 2014-3-1 21:51
谢谢版主,标量子查询是不是用的比较少,现在在做国网的一个项目的实施工作,目前来看没有看到标量子查询

还是不少吧,标量子查询有个好处,内存按照hash运算来的,而且有缓存,如果关联条件重复的特多,而且没有发生hash碰撞,性能还是不错的

使用道具 举报

回复

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

本版积分规则 发表回复

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