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将不会生效。
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接