我想在数据量很大的表中查出,名称里包含王,张,李等字符的所有信息,除了name like '%王%' or name like '%张%' or name like '%李%' 这样写条件外还有别的效率更高的方法吗?请高手指教!注:PLSQL中

解决方案 »

  1.   

    like前后加了%,都是全表扫,索引都别想用。无解。
      

  2.   


    普通视图有用吗?普通视图只是为了查询语句方便,实际执行的时候还是拿的那段sql嵌入一起分析的。
      

  3.   

    可以用instr(name,'李')>0 or ...
    对name列建instr(name,'李') instr(name,'...)函数索引或者如果查的是姓氏的话,李王张都是在字符串的第一个位置
    改成 like '李%' or name like '王%' or ...
    即把第一个%去掉。如果name 字段建了索引,检查下执行计划,应该会用上索引
      

  4.   

    instr()的效率好像比like要高楼主也可以试一下正则表达式
      

  5.   

    用OR 效率很低,分几段SQL查询