HINT篇---表关联顺序相关

三:表关联顺序相关的Hint
1、/*+ leading(TABLE) */  指定哪个表为驱动表
2、/*+ ordered */    指定按照from后面的顺序来选择谁做驱动表
3、/*+ use_hash(t,t1) */   表明采用hash方式连接
4、/*+ use_nl(t,t1) */   表明采用nested loop方式连接
5、/*+ use_merge(t,t1) */  表明采用merge方式连接
6、 NO_USE_HASH,NO_USE_NL,NO_USE_MERGE HINT  禁用这些链接方式
实验一:使用/*+ leading(TABLE) */
SQL> select  t4.object_id,t5.object_name from t4 ,t5 where t4.object_id=t5.object_id;
-------------------------------------------------------------------------------------------
| Id  | Operation             | Name      | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |           |   162K|    14M|       |  1030   (1)| 00:00:13 |
|*  1 |  HASH JOIN            |           |   162K|    14M|  3976K|  1030   (1)| 00:00:13 |
|   2 |   INDEX FAST FULL SCAN| IND_T4_ID |   162K|  2066K|       |   106   (1)| 00:00:02 |--默认情况下from后第一个表为驱动表
|   3 |   TABLE ACCESS FULL   | T5        | 97980 |  7559K|       |   304   (1)| 00:00:04 |
-------------------------------------------------------------------------------------------
         14  recursive calls
          3  db block gets
      11652  consistent gets
          0  physical reads
        952  redo size
    4259624  bytes sent via SQL*Net to client
     111833  bytes received via SQL*Net from client
      10121  SQL*Net roundtrips to/from client

SQL> select  /*+ leading(t4) */t4.object_id,t5.object_name from t4 ,t5 where t4.object_id=t5.object_id;
-------------------------------------------------------------------------------------------
| Id  | Operation             | Name      | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |           |   162K|    14M|       |  1030   (1)| 00:00:13 |
|*  1 |  HASH JOIN            |           |   162K|    14M|  3976K|  1030   (1)| 00:00:13 |--将t4作为驱动表,和不用没有变化。
|   2 |   INDEX FAST FULL SCAN| IND_T4_ID |   162K|  2066K|       |   106   (1)| 00:00:02 |
|   3 |   TABLE ACCESS FULL   | T5        | 97980 |  7559K|       |   304   (1)| 00:00:04 |
-------------------------------------------------------------------------------------------
          7  recursive calls
          3  db block gets
      11637  consistent gets
          0  physical reads
          0  redo size
    4259624  bytes sent via SQL*Net to client
     111833  bytes received via SQL*Net from client
      10121  SQL*Net roundtrips to/from client
SQL> select  /*+ leading(t5) */t4.object_id,t5.object_name from t4 ,t5 where t4.object_id=t5.object_id;
-------------------------------------------------------------------------------------------
| Id  | Operation             | Name      | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |           |   162K|    14M|       |  1030   (1)| 00:00:13 |
|*  1 |  HASH JOIN            |           |   162K|    14M|  8712K|  1030   (1)| 00:00:13 |将t5作为驱动表,t5的值进入内存通过hash运算得到
|   2 |   TABLE ACCESS FULL   | T5        | 97980 |  7559K|       |   304   (1)| 00:00:04 |的hash值放入hash表中,然后去t4的值通过hash
|   3 |   INDEX FAST FULL SCAN| IND_T4_ID |   162K|  2066K|       |   106   (1)| 00:00:02 |运算得到hash值去和t5的hash值匹配
-------------------------------------------------------------------------------------------
          7  recursive calls
          3  db block gets
      11761  consistent gets
          0  physical reads
          0  redo size
    4263381  bytes sent via SQL*Net to client
     111833  bytes received via SQL*Net from client
      10121  SQL*Net roundtrips to/from client
备注:这里t5一直全表扫描,如果让其走索引的话,那cost值就比全表扫描要高,可以通过加hint来解决。
实验二:使用/*+ ordered */
SQL> select  /*+ ordered */t4.object_id,t5.object_name from t4 ,t5 where t4.object_id=t5.object_id;

151788 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 2752026631

-------------------------------------------------------------------------------------------
| Id  | Operation             | Name      | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |           |   162K|    14M|       |  1030   (1)| 00:00:13 |
|*  1 |  HASH JOIN            |           |   162K|    14M|  3976K|  1030   (1)| 00:00:13 |
|   2 |   INDEX FAST FULL SCAN| IND_T4_ID |   162K|  2066K|       |   106   (1)| 00:00:02 |这里from后的t4作为驱动表
|   3 |   TABLE ACCESS FULL   | T5        | 97980 |  7559K|       |   304   (1)| 00:00:04 |
-------------------------------------------------------------------------------------------
实验三:使用/*+ use_hash(t,t1) */
SQL> select  /*+ use_hash(t4,t5) */ t4.object_id,t5.object_name from t4 ,t5 where t4.object_id=t5.object_id;

151788 rows selected.

Elapsed: 00:00:01.09

Execution Plan
----------------------------------------------------------
Plan hash value: 2752026631

-------------------------------------------------------------------------------------------
| Id  | Operation             | Name      | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |           |   162K|    14M|       |  1030   (1)| 00:00:13 |
|*  1 |  HASH JOIN            |           |   162K|    14M|  3976K|  1030   (1)| 00:00:13 |
|   2 |   INDEX FAST FULL SCAN| IND_T4_ID |   162K|  2066K|       |   106   (1)| 00:00:02 |
|   3 |   TABLE ACCESS FULL   | T5        | 97980 |  7559K|       |   304   (1)| 00:00:04 |
-------------------------------------------------------------------------------------------
          7  recursive calls
          3  db block gets
      11637  consistent gets
          0  physical reads
          0  redo size
    4259624  bytes sent via SQL*Net to client
     111833  bytes received via SQL*Net from client
      10121  SQL*Net roundtrips to/from client
实验四:使用/*+ use_nl(t4,t5) */
SQL> select  /*+ use_nl(t4,t5) */ t4.object_id,t5.object_name from t4 ,t5 where t4.object_id=t5.object_id;
151788 rows selected.
Elapsed: 00:00:01.23--时间比使用hash join用的多
Execution Plan
----------------------------------------------------------
Plan hash value: 3143514191

--------------------------------------------------------------------------------
| Id  | Operation          | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |           |   162K|    14M| 98348   (1)| 00:19:41 |--代价比hash join大很多
|   1 |  NESTED LOOPS      |           |   162K|    14M| 98348   (1)| 00:19:41 |
|   2 |   TABLE ACCESS FULL| T5        | 97980 |  7559K|   304   (1)| 00:00:04 |
|*  3 |   INDEX RANGE SCAN | IND_T4_ID |     2 |    26 |     1   (0)| 00:00:01 |
--------------------------------------------------------------------------------
          7  recursive calls
          1  db block gets
      34410  consistent gets
          0  physical reads
          0  redo size
    4259624  bytes sent via SQL*Net to client
     111833  bytes received via SQL*Net from client
      10121  SQL*Net roundtrips to/from client

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24500180/viewspace-1064690/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24500180/viewspace-1064690/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
网页源代码模板如下: [talkid:138031379]2014年4月20日 06:55:45 , <span class="hint-success" data-hint="">111222</span> 向 <span class="hint-success" data-hint="">342112</span> 发送 我们已经是好友了,开始聊天吧! [talkid:137031381]2014年4月20日 03:55:45 , <span class="hint-success" data-hint="">2323234</span> 在群 <span class="hint-success" data-hint="">20011</span> 中发言 我们已经是好友了,开始聊天吧! [talkid:137031382]2014年4月22日 04:45:45 , <span class="hint-success" data-hint="">2323234</span> 在群 <span class="hint-success" data-hint="">20011</span> 中发言 音频 :[<a href="files/f/f123fsasfsfsjdfrhf_n.m4a"]>音频</a> [talkid:137031383]2014年4月23日 04:55:45 , <span class="hint-success" data-hint="">2323234</span> 在群 <span class="hint-success" data-hint="">20011</span> 中发言 图片 :[<a href="files/f/f123fsasfsfsjdfrhf_n.jpg"]>图片</a> [talkid:137031384]2014年4月24日 05:55:45 , <span class="hint-success" data-hint="">2323234</span> 在群 <span class="hint-success" data-hint="">20011</span> 中发言 我们已经是好友了,开始聊天吧! [talkid:137031385]2014年4月25日 06:55:45 , <span class="hint-success" data-hint="">2323234</span> 在群 <span class="hint-success" data-hint="">20011</span> 中发言 我们已经是好友了,开始聊天吧! [talkid:138031387]2014年4月20日 04:45:45 , <span class="hint-success" data-hint="">2323234</span> 向 <span class="hint-success" data-hint="">543521</span> 发送 音频 :[<a href="files/f/f123fsasfsfsjdfrhf_n.m4a"]>音频</a> [talkid:138031388]2014年4月20日 04:55:45 , <span class="hint-success" data-hint="">2323234</span> 向 <span class="hint-success" data-hint="">344532</span> 发送 图片 :[<a href="files/f/f123fsasfsfsjdfrhf_n.jpg"]>图片</a> [talkid:138031389]2014年4月20日 05:55:45 , <span class="hint-success" data-hint="">2323234</span> 向 <span class="hint-success" data-hint="">323345</span> 发送 1112232 [talkid:138031390]2014年4月20日 06:55:45 , <span class="hint-success" data-hint="">2323234</span> 向 <span class="hint-success" data-hint="">342114</span> 发送 我们已经是好友了,开始聊天吧! 利用python爬虫,从中爬取“发送”或“中发言”后的字符串(包括链接地址)
最新发布
07-17

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值