Oracle Hint学习之二(忽略hint的情形)
admin
2023-05-07 17:42:08
0
  1. 在非分区索引上使用并行hint:

    如下全表扫描并行hint可以生效:

SQL> select /*+ full(dept) parallel(dept 2) */deptno from dept;
Execution Plan
----------------------------------------------------------
Plan hash value: 587379989
-------------------------------------------------------------------------------------------------------------
| Id  | Operation     | Name| Rows| Bytes | Cost (%CPU)| Time|    TQ  |IN-OUT| PQ Distrib |
--------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT     ||     4 |    12 |     2   (0)| 00:00:01 | ||     |
|   1 |  PX COORDINATOR      ||||     || ||     |
|   2 |   PX SEND QC (RANDOM)| :TQ10000 |     4 |    12 |     2   (0)| 00:00:01 |  Q1,00 | P->S | QC (RAND)  |
|   3 |    PX BLOCK ITERATOR ||     4 |    12 |     2   (0)| 00:00:01 |  Q1,00 | PCWC |     |
|   4 |     TABLE ACCESS FULL| DEPT|     4 |    12 |     2   (0)| 00:00:01 |  Q1,00 | PCWP |     |
--------------------------------------------------------------------------------------------------------------
Statistics
----------------------------------------------------------
 11  recursive calls
  0  db block gets
  5  consistent gets
  6  physical reads
  0  redo size
594  bytes sent via SQL*Net to client
523  bytes received via SQL*Net from client
  2  SQL*Net roundtrips to/from client
  0  sorts (memory)
  0  sorts (disk)
  4  rows processed

非分区索引使用并行hint无效:

SQL> select /*+ index(dept pk_dept) parallel(dept 2) */deptno from dept;
Execution Plan
----------------------------------------------------------
Plan hash value: 2913917002
----------------------------------------------------------------------------
| Id  | Operation | Name    | Rows  | Bytes | Cost (%CPU)| Time   |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT |   | 4 |12 | 1   (0)| 00:00:01 |
|   1 |  INDEX FULL SCAN | PK_DEPT | 4 |12 | 1   (0)| 00:00:01 |
----------------------------------------------------------------------------
Statistics
----------------------------------------------------------
 62  recursive calls
  0  db block gets
 59  consistent gets
  0  physical reads
  0  redo size
594  bytes sent via SQL*Net to client
523  bytes received via SQL*Net from client
  2  SQL*Net roundtrips to/from client
  7  sorts (memory)
  0  sorts (disk)
  4  rows processed

use_hash中指定被驱动表错误,hint无效:

SQL> select /*+ use_hash(t2) */ t1.empno,t1.ename,t2.loc from emp t1,dept t2 where t1.deptno=t2.deptno and t2.loc='CHICAGO';
6 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 844388907
----------------------------------------------------------------------------------------
| Id  | Operation     | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |       |     5 |   120 |     6(17)| 00:00:01 |
|   1 |  MERGE JOIN     |       |     5 |   120 |     6(17)| 00:00:01 |
|*  2 |   TABLE ACCESS BY INDEX ROWID| DEPT    |     1 |    11 |     2 (0)| 00:00:01 |
|   3 |    INDEX FULL SCAN     | PK_DEPT |     4 |       |     1 (0)| 00:00:01 |
|*  4 |   SORT JOIN     |       |    14 |   182 |     4(25)| 00:00:01 |
|   5 |    TABLE ACCESS FULL     | EMP     |    14 |   182 |     3 (0)| 00:00:01 |
----------------------------------------------------------------------------------------
因hash连接只适用等值关联,所有hint无效:而走NL
SQL> select /*+ use_hash(t1) */ t1.empno,t1.ename,t2.loc from emp t1,dept t2 where t1.deptno>=t2.deptno and t2.loc='CHICAGO';
6 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 4192419542
---------------------------------------------------------------------------
| Id  | Operation   | Name | Rows  | Bytes | Cost (%CPU)| Time  |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |  |7 |   168 |6   (0)| 00:00:01 |
|   1 |  NESTED LOOPS   |  |7 |   168 |6   (0)| 00:00:01 |
|*  2 |   TABLE ACCESS FULL| DEPT |1 |    11 |3   (0)| 00:00:01 |
|*  3 |   TABLE ACCESS FULL| EMP  |7 |    91 |3   (0)| 00:00:01 |

---------------------------------------------------------------------------


正确如下:

SQL> select /*+ use_hash(t1) */ t1.empno,t1.ename,t2.loc from emp t1,dept t2 where t1.deptno=t2.deptno and t2.loc='CHICAGO';
6 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 615168685
---------------------------------------------------------------------------
| Id  | Operation   | Name | Rows  | Bytes | Cost (%CPU)| Time  |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |  |5 |   120 |6   (0)| 00:00:01 |
|*  1 |  HASH JOIN   |  |5 |   120 |6   (0)| 00:00:01 |
|*  2 |   TABLE ACCESS FULL| DEPT |1 |    11 |3   (0)| 00:00:01 |
|   3 |   TABLE ACCESS FULL| EMP  |    14 |   182 |3   (0)| 00:00:01 |

---------------------------------------------------------------------------

自相矛盾的hint会忽略掉:

SQL> select /*+ full(dept) index_ffs(dept pk_dept) */ deptno from dept;

Execution Plan

----------------------------------------------------------

Plan hash value: 2913917002

----------------------------------------------------------------------------

| Id  | Operation | Name    | Rows  | Bytes | Cost (%CPU)| Time   |

----------------------------------------------------------------------------

|   0 | SELECT STATEMENT |   | 4 | 12 | 1   (0)| 00:00:01 |

|   1 |  INDEX FULL SCAN | PK_DEPT | 4 | 12 | 1   (0)| 00:00:01 |

---------------------------------------------------------------------------

Statistics

----------------------------------------------------------

 1  recursive calls

 0  db block gets

 2  consistent gets

 0  physical reads

 0  redo size

594  bytes sent via SQL*Net to client

523  bytes received via SQL*Net from client

 2  SQL*Net roundtrips to/from client

 0  sorts (memory)

 0  sorts (disk)

 4  rows processed


相关内容

热门资讯

武汉大学打开大门,以开放拆掉“... 澎湃新闻主笔 沈彬5月13日,武汉大学正式取消社会公众进校预约制度。公众无需任何预约,仅凭本人身份证...
中方很直白:对欧洲非常失望,把... 【文/观察者网 柳白】欧盟屡借“安全风险”和“产业振兴”之名,行保护主义与差别对待之实,遭中方明确回...
韩国赚大了,但大麻烦也来了 AI正在改变世界,但不得不说,最先被深刻重塑、掀起财富狂潮的,还是韩国。有些数据,说出来都不敢相信自...
以色列执政联盟提交提前解散议会... 以色列执政联盟主席奥菲尔·卡茨13日与联盟各派别领导人共同提交一项解散议会的议案,此举可能触发以色列...
内塔尼亚胡首次公开证实曾秘访,... 以色列总理办公室13日证实,以总理内塔尼亚胡在以色列对伊朗发动大规模军事行动期间曾秘密访问阿联酋,并...
1万个外资项目,看好这个县级市 在昆山高新区的沪士电子股份有限公司门口,运输建材的卡车与满载成品的物流货车交错而行。新厂房扩建与车间...
特朗普抵达酒店,车队驶过持续6... 美国总统特朗普车队于5月13日晚8点30分左右抵达位于北京东三环的下榻酒店。凤凰卫视驻北京记者在酒店...
少出国、少用油、少买金子,莫迪... 【文/观察者网 熊超然】上周末,印度总理莫迪呼吁民众在中东战争持续的这段时间里,未来一年内适度减少燃...
岛内“新地标”,沦为民进党“抢... 被视为岛内近年来最为重大的公共建设项目之一的新北市淡江大桥,于5月12日正式通车。然而,因民进党当局...
副秘书长在以色列机场遭扣留,联... 新华社联合国5月13日电 联合国秘书长副发言人哈克13日就联合国负责安全和安保事务的副秘书长吉勒·米...