如例,建这样一个索引:
create index temp1 on(a,b,c,d)
那么在查询时,如果条件为:
where a = '' and c = ''
也能用到这个索引吗?为什么?
这是最左前缀之外的oracle特性吗?还是最左前缀的一种?
从网上搜的原理都太难理解,麻烦各位高手给通俗的讲解一下。
谢谢!oracle索引

解决方案 »

  1.   

    可以查看一下sql执行计划来查看索引有没有起作用
      

  2.   

    起作用了,用到了索引a      【www.fiito.net】
      

  3.   

    能起作用,下面是例子:在date,place,amount上的组合索引
    select count(*) from record where date >'19991201' and date < '19991214' and amount >2000(< 1秒)
    select date,sum(amount) from record group by date(11秒)
    select count(*) from record where date >'19990901' and place in ('BJ','SH')(< 1秒)分析:这是一个合理的组合索引。它将date作为前导列,使每个SQL都可以利用索引,并且在第一和第三个SQL中形成了索引覆盖,因而性能达到了最优。
      

  4.   

    你索引是a,b,c,d
    只要有a  就可能用到索引
    去看下索引的原理
    先按a数据排序  然后同一个a列值里面再按b数据排序  然后依次
    所以除去a列的话  其实bcd列的数据可以看做是无序的