WEB开发网
开发学院数据库Oracle Oracle中表的连接及其调整 阅读

Oracle中表的连接及其调整

 2007-05-08 12:09:37 来源:WEB开发网   
核心提示: 同嵌套循环外连接一样,哈希循环外连接的驱动表同样是没有符合条件关联的那张表,Oracle中表的连接及其调整(6),如下述例子:Roby@XUE> select /**//*+ use_hash(emp,dept) */ emp.ename,dept.dname2 from emp,d

同嵌套循环外连接一样,哈希循环外连接的驱动表同样是没有符合条件关联的那张表。如下述例子:

Roby@XUE> select /**//*+ use_hash(emp,dept) */ emp.ename,dept.dname
2 from emp,dept
3 where emp.deptno=dept.deptno(+);
ENAME DNAME
---------- --------------
MILLER ACCOUNTING
KING ACCOUNTING
CLARK ACCOUNTING
FORD RESEARCH
ADAMS RESEARCH
SCOTT RESEARCH
JONES RESEARCH
JAMES SALES
TURNER SALES
BLAKE SALES
MARTIN SALES
WARD SALES
ALLEN
SMITH
14 rows selected.
Execution Plan
--------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------
| 0 | SELECT STATEMENT | | 14 | 308 | 7 (15)| 00:00:01 |
|* 1 | HASH JOIN OUTER | | 14 | 308 | 7 (15)| 00:00:01 |
| 2 | TABLE ACCESS FULL| EMP | 14 | 126 | 3 (0)| 00:00:01 |
| 3 | TABLE ACCESS FULL| DEPT | 4 | 52 | 3 (0)| 00:00:01 |
--------------------------------------------------------------

哈希连接比较适用于返回大数据量结果集的连接。使用哈希连接必须是在CBO模式下,参数hash_join_enabled设置为true,且只适用于等值连接。从Oracle9i开始,哈希连接由于其良好的性能渐渐取代了原来的排序合并连接。

四、跟表连接有关的几个HINT

(1)use_nl(t1,t2):表示对表t1、t2关联时采用嵌套循环连接。

(2)use_merge(t1,t2):表示对表t1、t2关联时采用排序合并连接。

(3)use_hash(t1,t2):表示对表t1、t2关联时采用哈希连接。

(4)leading(t):表示在进行表连接时,选择t为驱动表。

(5)ordred:要求优化器按from列出的表顺序进行连接。

需要注意的是在Oracle使用hint时,如果SQL语句中表用别名的话,那么hint中必须使用表的别名,否则hint将不会生效。

上一页  1 2 3 4 5 6 

Tags:Oracle 中表 连接

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接