oracle的索引本质上是拿空间换时间,建索引是为了增加查询的速度,但是却消耗了空间。
oracle索引包括三大块:
一、rowid查询:
rowid是oracle的一大特色点,使用rowid查询是速度是最快的。
二、B-树索引:
具体请移步: https://blog.csdn.net/diyyong/article/details/19041485
三、自建索引:
《1、索引选择:
<1、查询结果集的大小是直接影像SQL性能的根本因素,一般会选择结果集为总量数据的5%左右建索引。
<2、选择区分度高的字段建索引:比如商城的商品种类表id
<3、DML操作频繁的不建议使用索引。
<4、对于状态字段,可考虑使用用decode函数
具体请移步:https://blog.csdn.net/weeknd/article/details/71157044
《2、复合索引:
<1、建复合索引是因为单字段选择度不够高,为了提升选择度所有使用复合索引。(条件:两个字段总是同时出现)
<2、复合索引字段查询顺序:
1.区分度高的字段放前边
2.where条件出现次数多的放前边
四、null值与索引
1、null值不会计入索引,对于字段为null值多的可考虑建索引。
2、is null 作为查询时不会用索引,可考虑使用函数:nvl(字段,值)(字段,值),
具体请移步: https://blog.csdn.net/zwhfyy/article/details/3960250/
五、无法使用索引的情况
1、数据类型不一致问题:应用字段的数据类型与数据库类型不一致,无法使用索引。
2、对于字段进行运算,例如count、sum、avg等等,无法使用索引,这里比较突出的是时间的运算。
具体请移步: http://www.cnblogs.com/xiaobaihome/archive/2012/03/14/2395568.html
3、模糊查询时无法使用索引。