演示
必须要分析表,并且query_rewrite_enabled=TRUE
或者使用提示/*+ INDEX(ic_index)*/
反向键索引
目的:比如索引值是一个自动增长的列:
标准索引 反向索引
100001 100001
100002 200001
100003 300001
100004 400001
…… ……
100011 110001
100012 210001
100013 310001
100014 410001
多个用户对集中在少数块上的索引行进行修改,容易引起资源的争用,比如对数据块的等待。此时建立反向索引。
性能问题:
语法:
重建为标准索引:反之不行
键压缩索引
比如表landscp的数据如下:
site feature job
Britten Park, Rose Bed 1, Prune
Britten Park, Rose Bed 1, Mulch
Britten Park, Rose Bed 1,Spray
Britten Park, Shrub Bed 1, Mulch
Britten Park, Shrub Bed 1, Weed
Britten Park, Shrub Bed 1, Hoe
……
查询时,以上3列均在where条件中同时出现,所以建立基于以上3列的组合索引。但是发现重复值很多,所以考虑压缩特性。
Create index zip_idx
on landscp(site, feature, job)
compress 2;
将索引项分成前缀(prefix)和后缀(postfix)两部分。前两项被放置到前缀部分。
Prefix 0: Britten Park, Rose Bed 1
Prefix 1: Britten Park, Shrub Bed 1
实际所以的结构为:
0 Prune
0 Mulch
0 Spray
1 Mulch
1 Weed
1 Hoe
特点:组合索引的前缀部分具有非选择性时,考虑使用压缩。减少I/O,增加性能。
索引组织表(IOT)
将表中的数据按照索引的结构存储在索引中,提高查询速度。
牺牲插入更新的性能,换取查询性能。通常用于数据仓库,提供大量的查询,极少的插入修改工作。
必须指定主键。插入数据时,会根据主键列进行B树索引排序,写入磁盘。
分区索引
簇:
A cluster is a group of tables that share the same data blocks because they share common columns and are often used together.