添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
1、sqlplus " / as sysdba"

2、@$ORACLE_HOME/rdbms/admin/utlxplan.sql

3、create public synonym plan_table for plan_table;

4、grant select ,insert,update ,delete on plan_table to public

注:这里没有考虑安全性,plan_table对所有人都开发了增删改查权限,如果需要有安全性,可以针对某一个USER创建一个plan_table;

5、分析sql语句:(可以先select * from plan_table看看)

以oracle的scott用户登录(这个用户是被锁定的,使用前使用alter user scott account unlock;解锁)。

SQL> explain plan for SELECT * FROM emp, dept WHERE emp.deptno = dept.deptno  AND empno = 7782;

6、查看执行计划:

SQL> set linesize 700

SQL> @$ORACLE_HOME/rdbms/admin/utlxpls.sql (或者使用select * from table(dbms_xplan.display);可以出来一样的效果)

PLAN_TABLE_OUTPUT

----------------------------------------------------------------------------------------

| Id  | Operation             | Name    | Rows  | Bytes | Cost (%CPU)| Time     |

----------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT         |           |     1 |   117 |     3     (0)| 00:00:01 |

|   1 |  NESTED LOOPS             |           |     1 |   117 |     3     (0)| 00:00:01 |

|   2 |   TABLE ACCESS BY INDEX ROWID| EMP     |     1 |    87 |     2     (0)| 00:00:01 |

|*  3 |    INDEX UNIQUE SCAN         | PK_EMP  |     1 |       |     1     (0)| 00:00:01 |

|   4 |   TABLE ACCESS BY INDEX ROWID| DEPT    |   409 | 12270 |     1     (0)| 00:00:01 |

|*  5 |    INDEX UNIQUE SCAN         | PK_DEPT |     1 |       |     0     (0)| 00:00:01 |

----------------------------------------------------------------------------------------
注意看Operation的“缩进”。这个语句被解析成一棵“树”。这课树大约是

2   4

/     \

3       5

上面的数字,和PLAN_TABLE_OUTPUT中的“Id”是对应的。简单来说,就是这个语句有2,4构成;2又由3构成;4由5构成。

详细的SQL查询计划可以参阅其他书籍,作为初学者可以仅仅关注一下报告中的“TABLE ACCESS FULL”。

如果你有where子句还有这个TABLE ACCESS FULL出现,表明你缺少索引(这仅仅针对初学者,但是现实生活中却也能解决60-70%的问题)。