Oracle sql 调优:使用虚拟索引在生产环境测试创建索引对数据库性能的影响.pdf
文本预览下载声明
DDBBAA nneevveerr sslleeeepp--DDBBAA,,永永不不眠眠
FFooccuuss oonn OOrraaccllee DDaattaabbaassee,, GGooddeennGGaattee aanndd UUnniixx
[[ 顶顶]] OOrraaccllee ssqqll 调调优优::使使用用虚虚拟拟索索引引在在生生产产环环境境测测试试创创建建索索引引对对数数据据库库性性能能的的影影响响
分类: Oracle Performance Tunning Oracle 11g OCP PL/SQL Oracle 11g OCP Certification 2013-03-19 23:32
394人阅读 评论 (0) 收藏 举报
虚拟索引virtual indexnosegmentnosegment 子句dbms_metadata.get_dd
虚拟索引是一种 “假”索引,其定义存在于数据字典中,但不具有相应的索引段,也就是不会分配任何存储空间。利用虚拟索引,开发人
员
可以无需等待索引创建完成,也不需要额外的索引存储空间,就可以当做索引已经存在,累测试 SQL 语句的执行计划。如果优化器为某个
SQL 语句创建的执行计划代价很高,SQL tuning advisor 可能会建议在某个列上创建索引,但是在生产环境下,我们是没法随意
来创建索引和测试这些更改的。我们需要确保要创建的索引不会对数据库中运行的其他查询的执行计划产生任何影响。虚拟索引的出现就
是为了解决这个问题的:
下面我们来做一个测试来介绍虚拟索引的用法
1) 创建示例表
SQL create table test as select * from dba_objects;
2) 对该表执行任意的查询
16:43:55 system@PROD select * from test where object_name = EMP;
OWNER OBJECT_NAME SUBOBJECT_NAME OBJECT_ID
DATA_OBJECT_ID OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP STATUS T G S
NAMESPACE EDITION_NAME
- - -
SCOTT EMP
75315 75315 TABLE 2011-09-18 18:03:42 2013-03-10 17:07:42 2011-09-18:18:03:42
VALID N N N 1
3) 查看上述查询的执行计划
16:44:31 system@PROD set autotrace traceonly explain
16:44:42 system@PROD select * from test where object_name = EMP;
Elapsed: 00:00:00.01
Execution Plan
Plan hash value: 1357081020
| Id | Operation | Name | Rows | Bytes | Cost (%CPU) | Time |
| 0 | SELECT STATEMENT | | 12 | 2484 | 293 (1) | 00:00:04 |
|* 1 | TABLE ACCESS FULL | TEST | 12 | 2484 | 293 (1) | 00:00:04 |
Predicate Information (identified by operation id):
1 - filter (OBJECT_NAME=EMP)
Note
- dynamic sampling used for this statement (level=2)
4) 在 test 表的 object_name 字段上面创建虚拟索引
16:45:44 system@PROD c
显示全部