1、搞清楚两种索引的概念
在比较两种索引对select产生的影响之前,先要搞清楚,什么是Local prefixed index,什么叫Local nonprefixed index。其实,这两种索引,都是属于分区local索引,所以,这两种类型的索引,只有可能在分区表上才会出现。
1.1 什么是Local prefixed index是指索引中的列,就是分区表的分区键列,或者是索引中的列,包含表的分区键值列,并且为前置位
置在索引最前部位置的本地分区索引。
例如,emp表是按时间范围分区的表,分区键列是create_time,如果分区索引中的列为create_time,
或是以(create_time,emp_no)列的本地复合索引
1.2 什么是Local nonprefixed index在理解了什么是Local prefixedindex后,再来理解什么是Local nonprefixed index就容易了。
是指索引中的列,未包含分区表的分区键列,或者是分区键值列不在前置位置的本地分区索引
例如,emp表是按时间范围分区的表,分区键列是create_time,如果分区索引中的列为不包含create_time列,或者是象(emp_no ,create_time)这种create_time列不在索引前置位置的本地分区索引
2、如何查询索引的类型
视图:DBA_PART_INDEXES
LOCALITY字段:记录是否为LOCAL索引
ALIGNMENT字段:记录是PREFIXED索引还是NON_PREFIXED索引
3、准备与验证测试环境 3.1 创建分区表
create table tivoli.li_db_session_t(
dbname varchar2(10),
allsess number(10),
activess number(10),
timstap date)
partition by range(timstap)
(PARTITION ONEIDX_MINVALUESLESSTHAN(to_date('2010-08-01','yyyy-mm-dd')),
PARTITION ONEIDX_2010_08_1 VALUES LESS THAN(to_date('2010-09-01','yyyy-mm-dd')),
PARTITION ONEIDX_2010_08_2 VALUES LESS THAN(to_date('2010-09-15','yyyy-mm-dd')),
PARTITION ONEIDX_2010_09_1 VALUES LESS THAN(to_date('2010-10-01','yyyy-mm-dd')),
PARTITION ONEIDX_2010_09_2 VALUES LESS THAN(to_date('2010-10-15','yyyy-mm-dd')),
PARTITION ONEIDX_2010_10_1 VALUES LESS THAN(to_date('2010-11-01','yyyy-mm-dd')),
PARTITION ONEIDX_2010_10_2 VALUES LESS THAN(to_date('2010-11-15','yyyy-mm-dd')),
PARTITION ONEIDX_2010_11_1 VALUES LESS THAN(to_date('2010-12-01','yyyy-mm-dd')),
PARTITION ONEIDX_2010_11_2 VALUES LESS THAN(to_date('2010-12-15','yyyy-mm-dd')),
PARTITION ONEIDX_2010_12_1 VALUES LESS THAN(to_date('2011-01-01','yyyy-mm-dd')),
PARTITION ONEIDX_2010_12_2 VALUES LESS THAN(to_date('2011-01-15','yyyy-mm-dd')),
PARTITION ONEIDX_2011_01_1 VALUES LESS THAN(to_date('2011-02-01','yyyy-mm-dd')),
PARTITION ONEIDX_2011_01_2 VALUES LESS THAN(to_date('2011-02-15','yyyy-mm-dd')),
PARTITION ONEIDX_2011_02_1 VALUES LESS THAN(to_date('2011-03-01','yyyy-mm-dd')),
PARTITION ONEIDX_2011_02_2 VALUES LESS THAN(to_date('2011-03-15','yyyy-mm-dd')),