Oracle 一个字段既有联合索引,又有单独索引

环境

系统:  Linux AS3.0  + Oracle 9i RAC     
Dedicated Server
OLTP 系统

概述

      优化器采用的是RULE ,  现有一个表tab1,  有字段 a  ,  b ,  c ,  d ,  e . 都是varchar2 类型 , 建立index 有  c  单独索引, a  , b ,c 联合索引, 现在有sql 语句 :

select  count(*)   from  tab1 where  a=:1  and  b=:2  and c=:3;  

这个时候oracle使用的是单独索引 c ,  而不是三者的联合索引 。原来使用choose 模式的时候使用的却是三者的联合索引,但是choose 模式下我们并没有对表进行分析 。

还有在 RULE 模式下 这个语句中c 字段赋不同的值会有不同速度, 有些慢的几乎执行不出来,有些只需要10多ms . 不知道是否和 c 字段的值的不同分布和不同值的数据量有关系 ?

总结

一个字段,既有复合索引,又有单列索引。如果,条件语句中只有该字段(的原始值)作为条件,则走单列索引;如果条件语句中有该字段和其他复合索引字段,则走复合索引。

还要考虑索引失效的情况!!!

参考文章

http://www.itpub.net/forum.php?mod=viewthread&tid=311555

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:终极编程指南 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值