oracle sql调优学习笔记(二)RBO Query Tuning 之Row cache order
2011-08-12 15:48
471 查看
If two access methods have the same rank, then the RBO makes an arbitrary decision:
SQL> conn scott/tiger@ipradev;
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.5.0
Connected as scott
SQL> create table emp_temp as select * from emp;
Table created
SQL> desc emp_temp;
Name Type Nullable Default Comments
--------- ------------ -------- ------- --------
EMPNO NUMBER(4) Y
ENAME VARCHAR2(10) Y
JOB VARCHAR2(9) Y
MGR NUMBER(4) Y
HIREDATE DATE Y
SAL NUMBER(7,2) Y
COMM NUMBER(7,2) Y
DEPTNO NUMBER(2) Y
ISINSPECT NUMBER Y
SQL> select count(*) from emp_temp;
COUNT(*)
----------
15
SQL> create index idx_mgr on emp_temp(mgr);
Index created
SQL> create index idx_deptno on emp_temp(deptno);
Index created
SQL> alter session set optimizer_mode='RULE';
Session altered
SQL> explain plan for select * from emp_temp where mgr>100 and deptno>100;
Explained
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3940654962
--------------------------------------------------
| Id | Operation | Name |
--------------------------------------------------
| 0 | SELECT STATEMENT | |
|* 1 | TABLE ACCESS BY INDEX ROWID| EMP_TEMP |
|* 2 | INDEX RANGE SCAN | IDX_DEPTNO |
--------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("MGR">100)
2 - access("DEPTNO">100)
Note
-----
- rule based optimizer used (consider using cbo)
19 rows selected
SQL> drop index idx_mgr;
Index dropped
SQL> create index idx_mgr on emp_temp(mgr);
Index created
SQL> explain plan for select * from emp_temp where mgr>100 and deptno>100;
Explained
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 2048646427
------------------------------------------------
| Id | Operation | Name |
------------------------------------------------
| 0 | SELECT STATEMENT | |
|* 1 | TABLE ACCESS BY INDEX ROWID| EMP_TEMP |
|* 2 | INDEX RANGE SCAN | IDX_MGR |
------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("DEPTNO">100)
2 - access("MGR">100)
Note
-----
- rule based optimizer used (consider using cbo)
19 rows selected
第一次- filter("MGR">100),第二次- filter("DEPTNO">100),可见是arbitrary
SQL> conn scott/tiger@ipradev;
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.5.0
Connected as scott
SQL> create table emp_temp as select * from emp;
Table created
SQL> desc emp_temp;
Name Type Nullable Default Comments
--------- ------------ -------- ------- --------
EMPNO NUMBER(4) Y
ENAME VARCHAR2(10) Y
JOB VARCHAR2(9) Y
MGR NUMBER(4) Y
HIREDATE DATE Y
SAL NUMBER(7,2) Y
COMM NUMBER(7,2) Y
DEPTNO NUMBER(2) Y
ISINSPECT NUMBER Y
SQL> select count(*) from emp_temp;
COUNT(*)
----------
15
SQL> create index idx_mgr on emp_temp(mgr);
Index created
SQL> create index idx_deptno on emp_temp(deptno);
Index created
SQL> alter session set optimizer_mode='RULE';
Session altered
SQL> explain plan for select * from emp_temp where mgr>100 and deptno>100;
Explained
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3940654962
--------------------------------------------------
| Id | Operation | Name |
--------------------------------------------------
| 0 | SELECT STATEMENT | |
|* 1 | TABLE ACCESS BY INDEX ROWID| EMP_TEMP |
|* 2 | INDEX RANGE SCAN | IDX_DEPTNO |
--------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("MGR">100)
2 - access("DEPTNO">100)
Note
-----
- rule based optimizer used (consider using cbo)
19 rows selected
SQL> drop index idx_mgr;
Index dropped
SQL> create index idx_mgr on emp_temp(mgr);
Index created
SQL> explain plan for select * from emp_temp where mgr>100 and deptno>100;
Explained
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 2048646427
------------------------------------------------
| Id | Operation | Name |
------------------------------------------------
| 0 | SELECT STATEMENT | |
|* 1 | TABLE ACCESS BY INDEX ROWID| EMP_TEMP |
|* 2 | INDEX RANGE SCAN | IDX_MGR |
------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("DEPTNO">100)
2 - access("MGR">100)
Note
-----
- rule based optimizer used (consider using cbo)
19 rows selected
第一次- filter("MGR">100),第二次- filter("DEPTNO">100),可见是arbitrary
相关文章推荐
- JAVA_WEB Oracle 10g学习: PL/SQL应用程序性能调优
- SQL调优:MySQL “EXPLAIN”输出字段学习笔记
- Oracle Database 11g SQL 开发指南学习笔记:Oracle 11g r2安装完后SQL Developer无法使用的问题
- SQL学习笔记八 索引,表连接,子查询,ROW_NUMBER
- oracle_SQL学习笔记
- Oracle PL/SQL 上课学习笔记(一)
- Oracle之PL/SQL学习笔记
- Oracle 学习笔记 16 -- 游标(PL/SQL)
- 不知道为什么我的一oracle的sql调优文章笔记无法发表,提示“文章中出现禁止的词语,系统不予接受。”
- Oracle之PL/SQL学习笔记
- Oracle sql语句学习笔记
- oracle 学习笔记 - 查看 SQL 执行计划
- ORACLE PL/SQL 对象(object)学习笔记(二)
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
- oracle sql编程学习笔记
- SQL基本函数学习笔记(order by decode)
- Oracle PL/SQL 学习笔记(三)
- Oracle 11g SQL开发指南 学习笔记之从数据库表中检索信息
- Oracle 学习笔记 17 -- 异常处理(PL/SQL)
- asp.net缓冲学习笔记2--(sqlCacheDependency)