各位老师好 , 请教个问题 从官网看判断基表的原则是自底向上 自右到左
针对某个sql我加了hint /*+ leading(T N) */ 按理说 T 应该作为基表 , 但是从图来看nlj的方式N不是应该是基表么?
1 个赞
能发一下 链接的地址么?
没有连接地址 , 就是想请教下 nlj包括其他的join方式 如何从执行计划看基表是哪个?
比如 我图上改写的leading nlj 如何从执行计划确定基表
看你的写的 判断基表的规则 是从官网上看到的
666666666
学习了
这是有个朋友的回复 但是我找不到了 不清楚他回复的对不
ob官网没有针对不同的join方式 基表的判断么?
如果是自底向上 自右到左 那N应该是基表。但是我明明制定了leading(T)。 T应该是基表才对哇
按照这个例子中 基表的含义就知道了 但是按照你的那个执行计划 那两个表应该都是基表吧
例如,在以下执行计划片段中:
|ID|OPERATOR |NAME |EST. ROWS|COST |
|0 |LIMIT | |100 |81141|
|1 | TOP-N SORT | |100 |81127|
|2 | HASH GROUP BY | |2924 |68551|
|3 | HASH JOIN | |2924 |650004|
|4 | SUBPLAN SCAN |VIEW1 |2953 |19070|
|5 | HASH GROUP BY | |2953 |18662|
|6 | NESTED-LOOP JOIN| |2953 |15080|
|7 | TABLE SCAN |ITEM |19 |11841|
|8 | TABLE SCAN |STORE_SALES |161 |73 |
|9 | TABLE SCAN |DT |6088 |29401|
-
ITEM、STORE_SALES、DT都是基表,因为它们出现在TABLE SCAN操作中。 -
VIEW1是一个子查询视图,不是基表。
我说的基表是驱动表哦。驱动表会有三个么?
执行计划展示树的总结:
由上至下:在执行计划中一般含有多个节点,相同级别(或并列)的节点,靠上的优先执行,靠下的后执行(靠上的是驱动表,靠下的是被驱动表)
从右向左:在某个节点下还存在多个子节点,先从最靠右的子节点开始执行。
