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

Oracle中表的连接及其调整

 2007-05-08 12:09:37 来源:WEB开发网   
核心提示: 在外连接查询中,如果走嵌套循环连接的话,Oracle中表的连接及其调整(3),那么驱动表必然是没有符合条件关联的那张表,也就是后面不加(+)的那张表,如果查询的驱动表的记录数非常多,或者被驱动表的连接列上无索引或索引不是高度可选的情况,这是由于外连接需要提取可能另一张表没符合条件的记录,因

在外连接查询中,如果走嵌套循环连接的话,那么驱动表必然是没有符合条件关联的那张表,也就是后面不加(+)的那张表。这是由于外连接需要提取可能另一张表没符合条件的记录,因此驱动表需要是那张我们要返回所有符合条件记录的表。比如下面这个查询,就是选择了emp表做为驱动表进行连接:

Roby@XUE> select emp.ename,dept.dname
2 from emp,dept
3 where emp.deptno=dept.deptno(+);
ENAME   DNAME
---------- --------------
SMITH
ALLEN
WARD    SALES
JONES   RESEARCH
MARTIN   SALES
BLAKE   SALES
CLARK   ACCOUNTING
SCOTT   RESEARCH
KING    ACCOUNTING
TURNER   SALES
ADAMS   RESEARCH
JAMES   SALES
FORD    RESEARCH
MILLER   ACCOUNTING
14 rows selected.
Execution Plan
----------------------------------------------------------
|  0 | SELECT STATEMENT       |     |  14 |  308 |  15
|  1 | NESTED LOOPS OUTER     |     |  14 |  308 |  15
|  2 |  TABLE ACCESS FULL     | EMP   |  14 |  126 |   3
|  3 |  TABLE ACCESS BY INDEX ROWID| DEPT  |   1 |  13 |   1
|* 4 |  INDEX UNIQUE SCAN     | DEPT_PK |   1 |    |   0

嵌套循环连接返回前几行的记录是非常快的,这是因为使用了嵌套循环后,不需要等到全部循环结束再返回结果集,而是不断地将查询出来的结果集返回。在这种情况下,终端用户将会快速地得到返回的首批记录,且同时等待Oracle内部处理其他记录并返回。如果查询的驱动表的记录数非常多,或者被驱动表的连接列上无索引或索引不是高度可选的情况,嵌套循环连接的效率是非常低的。

上一页  1 2 3 4 5 6  下一页

Tags:Oracle 中表 连接

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