Oracle优化——外联结的执行计划
来源:互联网 发布:芒果tv电视直播软件 编辑:程序博客网 时间:2024/06/05 20:00
外联结不要使用Oracle自有的方式在where条件中加(+),而要用ANSI的方式(… OUTER JOIN)。Oracle的方式不支持全外联结,而且存在诡异的BUG。左外连接与右外连接时,Oracle会把返回全部记录的表做为驱动表,哪怕这样是违背了ordered提示。可以应用所有的联结方法,效率也与内联结相仿。HR@ prod> select /*+ ordered */ first_name , last_name , department_name 2 from employees e right outer join departments d on ( e.department_id = d.department_id and employee_id = 200 ) ;FIRST_NAME LAST_NAME DEPARTMENT_NAME-------------------- ------------------------- ------------------------------Jennifer Whalen Administration Marketing Purchasing Human Resources Shipping IT Public Relations Sales Executive Finance Accounting Treasury Corporate Tax Control And Credit Shareholder Services Benefits Manufacturing Construction Contracting Operations IT Support NOC IT Helpdesk Government Sales Retail Sales Recruiting Payroll27 rows selected.Execution Plan----------------------------------------------------------Plan hash value: 610636616-----------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |-----------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 27 | 1026 | 4 (25)| 00:00:01 || 1 | MERGE JOIN OUTER | | 27 | 1026 | 4 (25)| 00:00:01 || 2 | TABLE ACCESS BY INDEX ROWID | DEPARTMENTS | 27 | 432 | 2 (0)| 00:00:01 || 3 | INDEX FULL SCAN | DEPT_ID_PK | 27 | | 1 (0)| 00:00:01 ||* 4 | SORT JOIN | | 1 | 22 | 2 (50)| 00:00:01 || 5 | TABLE ACCESS BY INDEX ROWID| EMPLOYEES | 1 | 22 | 1 (0)| 00:00:01 ||* 6 | INDEX UNIQUE SCAN | EMP_EMP_ID_PK | 1 | | 0 (0)| 00:00:01 |-----------------------------------------------------------------------------------------------Predicate Information (identified by operation id):--------------------------------------------------- 4 - access("E"."DEPARTMENT_ID"(+)="D"."DEPARTMENT_ID") filter("E"."DEPARTMENT_ID"(+)="D"."DEPARTMENT_ID") 6 - access("EMPLOYEE_ID"(+)=200)Statistics---------------------------------------------------------- 0 recursive calls 0 db block gets 8 consistent gets 0 physical reads 0 redo size 1364 bytes sent via SQL*Net to client 534 bytes received via SQL*Net from client 3 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 27 rows processedHR@ prod> select /*+ ordered */ first_name , last_name , department_name 2 from employees e join departments d on ( e.department_id = d.department_id and employee_id = 200 ) ;FIRST_NAME LAST_NAME DEPARTMENT_NAME-------------------- ------------------------- ------------------------------Jennifer Whalen AdministrationExecution Plan----------------------------------------------------------Plan hash value: 2782876085----------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |----------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | 38 | 2 (0)| 00:00:01 || 1 | NESTED LOOPS | | 1 | 38 | 2 (0)| 00:00:01 || 2 | TABLE ACCESS BY INDEX ROWID| EMPLOYEES | 1 | 22 | 1 (0)| 00:00:01 ||* 3 | INDEX UNIQUE SCAN | EMP_EMP_ID_PK | 1 | | 0 (0)| 00:00:01 || 4 | TABLE ACCESS BY INDEX ROWID| DEPARTMENTS | 1 | 16 | 1 (0)| 00:00:01 ||* 5 | INDEX UNIQUE SCAN | DEPT_ID_PK | 1 | | 0 (0)| 00:00:01 |----------------------------------------------------------------------------------------------Predicate Information (identified by operation id):--------------------------------------------------- 3 - access("EMPLOYEE_ID"=200) 5 - access("E"."DEPARTMENT_ID"="D"."DEPARTMENT_ID")Statistics---------------------------------------------------------- 1 recursive calls 0 db block gets 4 consistent gets 0 physical reads 0 redo size 704 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)1rows processed全外联结则是一种特殊的联结方式HR@ prod> select /*+ ordered */ first_name , last_name , department_name 2 from employees e full outer join departments d on ( e.department_id = d.department_id ) 3 where employee_id = 200 ;FIRST_NAME LAST_NAME DEPARTMENT_NAME-------------------- ------------------------- ------------------------------Jennifer Whalen AdministrationExecution Plan----------------------------------------------------------Plan hash value: 2631508678-------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |-------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 122 | 6832 | 7 (15)| 00:00:01 ||* 1 | VIEW | VW_FOJ_0 | 122 | 6832 | 7 (15)| 00:00:01 ||* 2 | HASH JOIN FULL OUTER| | 122 | 4636 | 7 (15)| 00:00:01 || 3 | TABLE ACCESS FULL | DEPARTMENTS | 27 | 432 | 3 (0)| 00:00:01 || 4 | TABLE ACCESS FULL | EMPLOYEES | 107 | 2354 | 3 (0)| 00:00:01 |-------------------------------------------------------------------------------------Predicate Information (identified by operation id):--------------------------------------------------- 1 - filter("EMPLOYEE_ID"=200) 2 - access("E"."DEPARTMENT_ID"="D"."DEPARTMENT_ID")Statistics---------------------------------------------------------- 1 recursive calls 0 db block gets 15 consistent gets 0 physical reads 0 redo size 704 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) 1 rows processed
阅读全文
0 0
- Oracle优化——外联结的执行计划
- Oracle优化之Oracle的执行计划
- ORACLE优化--执行计划
- Oracle 执行计划优化
- ORACLE 优化执行计划
- Oracle 优化器的执行计划了解
- oracle嵌套循环的执行计划优化
- oracle嵌套循环的执行计划优化
- oracle嵌套循环的执行计划优化
- ORACLE数据库SQL优化--->如何执行计划的执行顺序
- oracle 优化器 执行计划
- Oracle优化05-执行计划
- Oracle执行计划——Oracle 如何启用执行计划
- Oracle执行计划——Oracle 如何启用执行计划
- Oracle执行计划——Oracle 如何启用执行计划
- [Oracle] Sql 优化系列--查看Oracle执行计划的方法
- ORACLE的执行计划
- ORACLE的执行计划
- Database, UVa 1592
- 简单的页面模板引擎(一)
- 外联结的ON条件与WHERE条件的区别
- 通过反射修改 被 private final static修饰的成员
- Codeforces Round #430 (Div. 2) C. Ilya And The Tree dfs+set
- Oracle优化——外联结的执行计划
- spring_JUnit4测试_通过注解加载xml配置_@RunWith_@ContextConfiguration
- derby数据库源码分析(二)--页面分析
- 善良比聪明重要
- 磁盘控制器驱动程序不对,导致蓝屏
- 基于Android的WiFi聊天系统
- Unity_2D游戏工程的创建_071
- js中将字符串中转义符 反斜杠\去掉的方法 com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct
- Python爬虫----12306火车票余票查询器