对于结果集超过表数据总数20%以上使用使用全表扫描就有可能快些了.像直接不带where条件(或者group by order by 等等)的sql语句建立索引是没有意义的.

解决方案 »

  1.   

    谢谢楼上两位
    如果是where 呢
    如select * from tab where a='a' and b='b'
    如果索引是a,b,c组成的,上面查询语句是否会快一些?
      

  2.   

    select * from tab where a='a' and b='b' and c='c'
    因为你键的是组合索引,所以必须a,b,c同时出现在where条件中,
    其实,你可以查看执行计划,从中你可以看出oracle的优化器是否
    用到索引
      

  3.   

    如果条件适合,oracle会用索引。
    如果写成:
    select b,c from tab where c='c' and b='b';
    oracle可能也会利用索引。不过是索引全扫描,而不是范围扫描如果写成:
    select d from tab where c='c' and b='b';
    oracle就会直接扫描原表了。