现在公司有个需求就是以短信的内容为检索条件进行检索,但检索速非常慢,
select * from sms_send m where m.sms_content like '%短信内容%';
求高手给个优化方法

解决方案 »

  1.   

    可以试试这样,把模糊查询的字段分隔开
    where m.sms_content like like ‘XX%’
    and m.sms_content like 'YY%'
      

  2.   

    --全文索引
    GRANT CTXAPP TO 当前用户;
    GRANT EXECUTE ON CTX_DDL TO 当前用户;
    在当前用户下执行 EXEC CTX_DDL.CREATE_PREFERENCE('CTX_LEXER','CHINESE_VGRAM_LEXER');
    create index IDX_PASSWD_EMAIL on PASSWD (EMAIL)
    INDEXTYPE IS CTXSYS.CONTEXT  PARAMETERS('LEXER CTX_LEXER');
    --查询方式
    select .... where contains(xxx,'xxx')>0 这样可以模糊查询。
    -- sync: 同步
    VARIABLE jobno number; 
    BEGIN 
    DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.sync_index(''xxxxx'');',SYSDATE,'SYSDATE + (1/24/4)'); 
    commit; 
    END; 
    -- optimizer删除同步
    VARIABLE jobno number; 
    BEGIN 
    DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.optimize_index(''xxxxx'',''FULL'');',SYSDATE,'SYSDATE + 1'); 
    commit; 
    END;