-
USE_HASH
andNO_USE_HASH
USE_NL
这个hint比较重要的一点是要知道,可以通过LEADING来指定哪个表为外表,哪个表为内表。
SQL> explain plan for select /*+ leading(e d) use_nl(d e) */ e.empno , e.ename, d.dname from test2 e, dept d where e.deptno=d.deptno order by dname;
-----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 14 | 770 | 8 (13)| 00:00:01 |
| 1 | SORT ORDER BY | | 14 | 770 | 8 (13)| 00:00:01 |
| 2 | NESTED LOOPS | | 14 | 770 | 7 (0)| 00:00:01 |
| 3 | TABLE ACCESS FULL| TEST2 | 14 | 462 | 2 (0)| 00:00:01 |
|* 4 | TABLE ACCESS FULL| DEPT | 1 | 22 | 0 (0)| 00:00:01 |
-----------------------------------------------------------------------------
USE_MERGE
很好理解,例子如下
SQL> explain plan for select /*+ use_merge(e d) */ * from emp e , dept d where e.deptno=d.deptno;
----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 14 | 1638 | 6 (34)| 00:00:01 |
| 1 | MERGE JOIN | | 14 | 1638 | 6 (34)| 00:00:01 |
| 2 | SORT JOIN | | 4 | 120 | 3 (34)| 00:00:01 |
| 3 | TABLE ACCESS FULL| DEPT | 4 | 120 | 2 (0)| 00:00:01 |
|* 4 | SORT JOIN | | 14 | 1218 | 3 (34)| 00:00:01 |
| 5 | TABLE ACCESS FULL| EMP | 14 | 1218 | 2 (0)| 00:00:01 |