a表里有个Enddate字段,字段类型为date类型,并且Enddate为索引。SQL1;  select * from a where Enddate < '2007-5-14'
SQL2:   select * from a where Enddate = '2007-5-14'经过PL/SQL中的解释计划分析,SQL1没有走索引,而SQL2走了索引,请问为什么?请麻烦解释一下,谢谢。

解决方案 »

  1.   

    SQL返回多少条数据?table中一共有多少条数据?如果需要返回较多的数据,那么优化器会选择表扫描,因为这样会更高效。索引的使用涉及到很多方面的考虑的
      

  2.   

    1 analyse下表再看行不行
    2 强制使用索引,select /*+ index(索引名) */ * from a where Enddate < '2007-5-14'
      

  3.   

    第一条SQL返回大概10万条数据。
    第二条SQL返回大概1千条数据。
    表数据里50-60万多条数据。