在Oracle里除了我们常用的B树索引外,还有一些非凡索引能被使用。
如:倒序索引,位映射索引,函数索引等。
我根据自己的体会,列一个注重事项:
倒序索引:
ORACLE DOC上说倒序索引比较适合于序列号产生的字段,如唯一编号。
但是这样的索引对于范围的比较,如
只对 = in 等操作才会调用索引。
所以一般的自动增长的PK字段还是用常规B树索引好一些。
位映射索引:
适合于唯一记录数较少,DML操作较少的字段。如历史数据表里的类别字段。
它可以减少索引存储空间的占用,并提高访问速度。
最好在查询时加提示/*+ first_rows */ 或者 /*+ index(表名 索引名)*/ 确认使用位映射索引。
函数索引:
需要修改数据库里面两个动态参数:
QUERY_REWRITE_ENABLED=TRUE
QUERY_REWRITE_INTEGRITY=TRUSTED
函数索引才会在有提示/*+ first_rows */ 或者 /*+ index(表名 索引名)*/ 时被使用。