我们有一个查询,在clob上运行搜索需要48分钟。该查询的编写方式就好像它不是clob列一样,并使用contains和near。在一定的单词距离内搜索3个单词是很重要的。我需要加快这一点,并想做一个索引的clob,但不知道这是否会工作,不完全明白如何做。我从汤姆·伯尔森那里找到的 http://www.dba-oracle.com/t_clob_search_query.htm 或者 https://asktom.oracle.com/pls/apex/asktom.search?tag=oracle-text-contains-search-with-near-is-very-slow
当前脚本:
SELECT clob_field FROM clob_table WHERE contains(clob_field,'NEAR (((QUICK),(FOX),(LAZY)),5)') > 0;
如果要使用类似于索引的内容:
SELECT clob_field FROM clob_table WHERE contains(dbms_lob.substr(clob_field,'near(((QUICK),(FOX),(LAZY)),5)')) > 0;
如果没有,我需要做索引,但我不太明白如何使用CTXCAT和CONTEXT( https://docs.oracle.com/cd/A91202_01/901_doc/text.901/a90122/ind4.htm
除非对Contains进行全局索引,否则它不会工作,因此我必须对字段进行索引,然后才能使原始查询工作。