lirong2008wf
lirong2008wf
2011-05-09 21:53
浏览 681

请问在oracle查询clob字段的内容怎么办呢?

我在ORACLE10G中,有个表的字段是文章的内容CLOB字段,我通过LIKE 查询这个字段的内容,但是非常非常的慢,怎么才能让它快起来啊??

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • iteye_8576
    iteye_8576 2011-05-10 06:48
    已采纳

    建议使用全文检索(FULL TEXT SEARCH)。

    用ORACLE8i中的intermedia text或者oracle9i的text对CLOB字段建一个CTXSYS.CONTEXT 类型的索引, 然后在查询时用CONTAIN作为查询条件.代码如下:

    [code="sql"]--创建表
    CREATE TABLE tb_clob(
    userid NUMBER PRIMARY KEY,
    text CLOB
    );
    --建立索引
    CREATE INDEX search_idx
    ON tb_clob(text)
    INDEXTYPE IS ctxsys.CONTEXT;
    --查询
    SELECT COUNT(*)
    FROM tb_clob
    WHERE contains(text, 'index', 1) > 0
    [/code]

    点赞 评论
  • weixin_42515006
    天动 2011-05-09 21:57

    dbms_lob.instr(colname,searchValue,1,1)>0
    这样可能会好点.
    全文检索,关系数据库总的是不咋的吧.

    点赞 评论
  • suziwen
    suziwen 2011-05-09 22:07

    对大字段的查询还是全文检索吧

    点赞 评论
  • iihero
    iihero 2011-05-10 09:12

    如果是大文本,还是建议使用全文检索。用CLOB自带的函数检索,效率肯定不怎么的。关键是用不上索引。

    建议结合lucene使用。数据库的全文检索有点鸡肋。

    点赞 评论

相关推荐