解决方案 »

  1.   

    建议使用全文检索实现,参考
    oracle 全文检索实践
      

  2.   

    我想请问你的  jgsj >= to_date('2014-09-15 00:00:00','yyyy/mm/dd HH24:MI:SS') 
            and jgsj <= to_date('2014-09-15 23:59:59','yyyy/mm/dd HH24:MI:SS') 
    能筛选出来多少记录呢?
      

  3.   

    like%..%这种方式是不走索引的,(like%..或like..%是走索引的)
    全文检索可以使用索引,走不走索引,查询速度的差异可是很大的
      

  4.   

    非常感谢bw555的回答!
    我的查询条件是时间必须有,号牌号码like%..%where  jgsj >= to_date('2014-09-15 0:00:00','yyyy/mm/dd HH24:MI:SS')  and jgsj <= to_date('2014-09-15 23:59:59','yyyy/mm/dd HH24:MI:SS')  and hphm like '%闽KWHWTQ%' order by jgsj  desc  ) 
    jgsj desc和hphm做组合索引--------------------->现在查询走组合索引,用时40秒。
    还是达不到需求啊,我打算试一下全文检索,可是分词的时候是难题,像车牌号“闽KWHW3Q”数字和字母组合分词怎么分?
      

  5.   

    你的虽然走的组合索引,但是和单独的jgsj索引效果应该是一样的
    走索引是只是时间条件在起作用,like%..%使用索引是不能提高速度的
      

  6.   

    我查了下like %keyword    索引失效,使用全表扫描。 like keyword%    索引有效。like %keyword% 索引失效,也无法使用反向索引。
    你试试这个table.field like  ‘%AAA%’ 可以改为 locate (‘AAA’ , table.field) > 0