当前位置:   article > 正文

oracle 复合索引_oracle 复合索引 字段顺序

oracle 复合索引 字段顺序

复合索引原理:
1、前缀性(prefixing)
即按照复合索引创建时包含字段的顺序分别依次排序,如在(a,b,c)列上创建了复合索引,那么该复合索引在oracle数据库索引树上就会先按a排序,再按b排序,最后按c排序。

  a     b   c
河南   洛阳   伊川
河南   洛阳   偃师
河南   洛阳   洛宁
河南   洛阳   宜阳
河南   洛阳   汝阳
河南   洛阳   栾川
······

oracle不是智能的,它只能按图索骥,该索引先按a排序,那么只要给出a列的值,就会走索引。相反,如果给出了c值或者b值(即没有a的值),那么oracle就会乱找,变成全表扫描。

但是也有一种情况是例外,那就是skip scan index。
如果oracle发现第一个字段值很少的情况下,例如假设emp表有gender(性别)字段,并且建立了(gender,ename,job,mgr)复合索引.因为性别只有男和女,所以为了提高索引的利用率,oracle可将这个索引拆成('男',ename,job,mgr),('女',ename,job,mgr)两个复合索引.这样即便没有gender条件,oracle也会分别到男索引树和女索引树进行搜索.
但是,(gender,ename,job,mgr)索引本身设计是不合理的,它违背了复合索引的第二个原理。

2、可选性(selectivity)
oracle 建议按字段可选性高低进行排序,即字段值多(重复的数目少的,如id)的排在前面。这是因为字段值越多可选性就越强,定位的数据记录就越少,查询效率就越高。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/984764
推荐阅读
相关标签
  

闽ICP备14008679号