设置执行计划方法:
set autotrace off 默认值,关闭执行计划
set autotrace on explain 只显示执行计划
set autotrace on statistics 只显示执行计划统计信息
set autotrace on 显示执行计划和统计信息
set autotrace traceonly 与on相似,不显示语句的执行结果
1.oracle数据库访问数据的方法
(1).全表扫描(Full Table Scans,FTS)
(2).通过隐藏rowid字段扫描(Table Access by ROWID)
(3).索引范围扫描(Index range Scan)
(4).索引唯一扫描(Index unique scan)
(5).索引全扫描(Index full scan)
(6).索引快速扫描(Index fast full scan)
1).全表扫描
SQL> set autotrace on
SQL> select * from emp where comm=1400;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
Execution Plan
----------------------------------------------------------
Plan hash value: 3956160932
--------------------------------------------------------------------------
0 redo> 1022 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
SQL>
3).索引范围扫描
SQL> create index in_sal on emp(sal);
Index created.
SQL> select * from emp where sal < 1000;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-DEC-80 800 20
7900 JAMES CLERK 7698 03-DEC-81 950 30
Execution Plan
----------------------------------------------------------
Plan hash value: 3065173639
--------------------------------------------------------------------------------------
Predicate Information (identified by operation> ---------------------------------------------------
1 - filter("SAL">2000)
Statistics
----------------------------------------------------------
1 recursive calls
0 db block gets
4 consistent gets
0 physical reads
0 redo> 1263 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)
6 rows processed
SQL>
6)索引快速扫描
2.使用explain plan for查看执行计划
SQL> explain plan for select * from emp where sal > 3000;
Explained.
SQL> seletc * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------------------
Plan hash value: 3065173639
--------------------------------------------------------------------------------------