即使在该列创建索引,也不会使用的
也只能 like '%中国%北京%' 或者instr(colname,'中国')>0 and instr(colname,'北京')>0

解决方案 »

  1.   

    像 like 那种的模糊查询,数据库引擎将不使用索引数据。像 instr(colname,'中国') 这样子在列名上使用函数,除非你建的是 function-based index,否则也将不使用一般的索引。下面是创建 function-based index 的示例,示例 1 为Oracle online document 里的关于 function-based index 的示例,你可以参考。1. CREATE INDEX emp_i ON emp (UPPER(ename)); 
    创建了这个索引之后,执行如下语句的时候将使用索引数据:
    SELECT * FROM emp WHERE UPPER(ename) IS NOT NULL
       ORDER BY UPPER(ename);2. CREATE INDEX idx_colname ON TAB_NAME(instr(colname,'中国'))
      

  2.   

    clob就用select * from tbname where dbms_lob.instr(colname,'中国',1,1)>0 and dbms_lob.instr(colname,'北京',1,1)>0
      

  3.   

    关键是我已经对‘文章’(wz)字段建了全文索引了,还设置了比如lexer等属性,最后用bzszp大哥所说的那句带dbms_lob的SQL语言就直接可以全文查询了吗?不需要用Contains关键字吗?好象ORACLE文档中就是用的CONTAINS做的查询。