我有一列逗号分隔的数字,如'2323,23323,23323'。该表有2000万条记录,需要大约37秒才能返回一个结果的基础上,像下面这样的关键字。
SELECT count(*) from testtable WHERE node_sequence like '%324%';
我试图通过创建下面的索引来使用Oracle文本来改善查询时间
CREATE INDEX node_sequence_index ON testtable(node_sequence) INDEXTYPE IS ctxsys.context;
exec ctx_ddl.sync_index('node_sequence_index');
但是下面的查询只对单词起作用:
SELECT count(*) from testtable WHERE CONTAINS(node_sequence, '324') > 0;
通过查看文档,索引将按单词标记(以空格分隔)。是否有方法按逗号标记?我无法找到可以这样做的示例。请帮助我理解我在这里遗漏了什么?
2条答案
按热度按时间vsikbqxv1#
您需要使用所需的参数创建和调优自己的lexer(文档)。
类似这样的东西(抱歉,未测试):
更新
代码来自@Chandan的评论,适用于问题中提到的条件:
mlmc2os52#