qb_name and leading

看了落落的blog  http://blog.csdn.net/robinson1988/article/details/10551467 (如何让in/exists 子查询(半连接)作为驱动表) 

我也实验了下

SELECT *
  FROM TEST A
 WHERE A.MGR IN (SELECT B.MGR FROM SCOTT.EMP B WHERE JOB = 'SALESMAN');
 
执行计划
----------------------------------------------------------
Plan hash value: 822613440

-----------------------------------------------------------
| Id  | Operation	   | Name | Rows  | Bytes | Cost  |
-----------------------------------------------------------
|   0 | SELECT STATEMENT   |	  |    13 |  1287 |	5 |
|*  1 |  HASH JOIN SEMI    |	  |    13 |  1287 |	5 |
|   2 |   TABLE ACCESS FULL| TEST |    14 |  1218 |	2 |
|*  3 |   TABLE ACCESS FULL| EMP  |	3 |    36 |	2 |
-----------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("A"."MGR"="B"."MGR")
   3 - filter("B"."MGR" IS NOT NULL AND "JOB"='SALESMAN')

Note
-----
   - cpu costing is off (consider enabling it)
   - dynamic sampling used for this statement (level=2)

SQL> SELECT /*+ leading(B@bb) */ *
  FROM TEST A
 WHERE A.MGR IN (SELECT /*+ qb_name(bb) */ B.MGR
                   FROM SCOTT.EMP B
                  WHERE JOB = 'SALESMAN');
  2    3    4    5  
Execution Plan
----------------------------------------------------------
Plan hash value: 3406938101

----------------------------------------------------------------------------
| Id  | Operation	    | Name | Rows  | Bytes | Cost (%CPU)| Time	   |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |	   |	 6 |   300 |	 8  (25)| 00:00:01 |
|*  1 |  HASH JOIN	    |	   |	 6 |   300 |	 8  (25)| 00:00:01 |
|   2 |   SORT UNIQUE	    |	   |	 3 |	36 |	 3   (0)| 00:00:01 |
|*  3 |    TABLE ACCESS FULL| EMP  |	 3 |	36 |	 3   (0)| 00:00:01 |
|*  4 |   TABLE ACCESS FULL | TEST |	13 |   494 |	 3   (0)| 00:00:01 |
----------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("A"."MGR"="B"."MGR")
   3 - filter("JOB"='SALESMAN' AND "B"."MGR" IS NOT NULL)
   4 - filter("A"."MGR" IS NOT NULL)


SQL> SELECT /*+ leading(B@bb) use_nl(B@bb,a) */ *
  FROM TEST A
 WHERE A.MGR IN (SELECT /*+ qb_name(bb) */ B.MGR
                   FROM SCOTT.EMP B
                  WHERE JOB = 'SALESMAN');
Execution Plan
----------------------------------------------------------
Plan hash value: 1820597472

----------------------------------------------------------------------------
| Id  | Operation	    | Name | Rows  | Bytes | Cost (%CPU)| Time	   |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |	   |	 6 |   300 |	 8  (13)| 00:00:01 |
|   1 |  NESTED LOOPS	    |	   |	 6 |   300 |	 8  (13)| 00:00:01 |
|   2 |   SORT UNIQUE	    |	   |	 3 |	36 |	 3   (0)| 00:00:01 |
|*  3 |    TABLE ACCESS FULL| EMP  |	 3 |	36 |	 3   (0)| 00:00:01 |
|*  4 |   TABLE ACCESS FULL | TEST |	 2 |	76 |	 2   (0)| 00:00:01 |
----------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - filter("JOB"='SALESMAN' AND "B"."MGR" IS NOT NULL)
   4 - filter("A"."MGR" IS NOT NULL AND "A"."MGR"="B"."MGR")


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值