如表产品product中 字段:产品名称 name如果我只要根据产品名称用全模糊查该产品信息:也就是执行sql: select * from product where name like '%某某%';如果在字段name上建立索引,那么上面的查询,还是进行全表扫描,而不是根据索引检索,如何才能强制它检索索引,而用的还是上面的sql语句!

解决方案 »

  1.   

    it's impossible to use the index if your where clause is LIKE '%XX%'. do you understand what is an index?
      

  2.   

    KingSunSha(弱水三千) 
    那么你说说什么是索引?
    用别的办法能实现么?
      

  3.   

    照我的理解,索引就是一个小表。为Name建立了索引,就相当于建立了一个只有一个字段name的表。不管你用模糊查询还是什么查询,都是根据索引来查询。
      

  4.   

    我不知道为什么oracle没有让索引支持全模糊查询,但是sql server 可以支持,如果30万条纪录的一张表,字段加起来大概3000个char,那么如果要全模糊查一条纪录的时间简直慢的让人无法忍受(5-10)分钟。
    可是用sql server却快得多。
    为什么sql server 可以做到的,oracle  确做不到!!!!
      

  5.   

    intermedia 索引请查阅相关使用对中文和英文的混合体有严重问题对中文的支持不是很好!
      

  6.   

    biti_rainy(biti_rainy) ,你好,
    能否说清楚一些,你说的intermedia 索引是不是大型搜索引擎都是用这种技术?
    那么如果中文支持的不好的话,为什么google的搜索却比较准确?
    hyee(慧风) ,你能否说清楚一些吗?
      

  7.   

    google的设计思想跟它是类似的
    不过google做的更好不然人家怎么能做成 搜索殷勤  ?intermedia: 你可以去 http://asktom.oracle.com  搜索
      

  8.   

    biti_rainy(biti_rainy) ,你好,你有什么好的办法,让oracle全模糊查询速度更快的么?
      

  9.   

    关注中,我知道怎么做一个字段的全文索引,但是就是找不到对多个字段怎么做?
    一个字段的范例:--0、 前提:建库语句
        CREATE TABLE aclob(
        ID               VARCHAR2(20) ,
        CCLOB            CLOB,
        UU               VARCHAR2(40),
        VID              NUMBER(10)
        );
       --创建索引
        CREATE INDEX "INDEXCCLOB" 
        ON  "ACLOB"("VID") 
        COMPRESS 
        --1、设置词法分析器(lexer)  begin ctx_ddl.create_preference('my_lexer','chinese_vgram_lexer'); end;  
    /--2、创建全文索引   create index myindex on aclob(cclob) indextype is ctxsys.context  
     parameters('lexer my_lexer');  
    --3、使用job定时同步和优化  
    -- sync:  
    VARIABLE jobno number;  
    BEGIN  
    DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.sync_index(''myindex'');',  
    SYSDATE, 'SYSDATE + (1/24/4)');  
    commit;  
    END;  
     /-- optimizer  
    VARIABLE jobno number;  
    BEGIN  
    DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.optimize_index(''myindex'',''FULL'');',  
    SYSDATE, 'SYSDATE + 1');  
    commit;  
    END;  
    --其中, 第一个job的SYSDATE + (1/24/4)是指每隔15分钟同步一次,第二个job的SYSDATE + 1是每隔1天做一 次全优--化。具体的时间间隔,你可以根据自己的应用的需要而定。至此,你的全文检索功能已设置完成。  4、使用全文检索
    SELECT id,cclob FROM aclob WHERE contains(cclob, '00', 1)>0;
      

  10.   

    多个字段的需要建立user_datastore
      

  11.   

    zhaoxuerui(sherry) 能说的详细一点吗??
      

  12.   

    楼上的,创建索引的时候出现如下错误:SQL>  create index doc_index on document(location) indextype is ctxsys.context  parameters('lexer my_lexer');
      
    ERROR at line 1:
    ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
    ORA-20000: interMedia Text error:
    DRG-10502: index DOC_INDEX does not exist
    DRG-11102: assigned lexer can not operate on AMERICAN_AMERICA.WE8ISO8859P1
    language setting
    ORA-06512: at "CTXSYS.DRUE", line 126
    ORA-06512: at "CTXSYS.TEXTINDEXMETHODS", line 78
    ORA-06512: at line 1
    如何解决?
      

  13.   

    有没有执行这一句?
    begin ctx_ddl.create_preference('my_lexer','chinese_vgram_lexer'); end;  
    /