首页 > 解决方案 > 优化字符串搜索 oracle 12c 的最佳方法

问题描述

我有一张如下表:

create table xx (university varchar2(2), sub_uni varchar2(2), id varchar2(30), name varchar2(80))

哪个有 pk 索引university,sub_uni,id

我想对名称列进行快速搜索,如下所示:

select * from xx where upper(name) like upper('%JOHN%')

但是,由于我的表包含大约 2200 万条记录,并且上述查询执行全表扫描,因此大约需要 20-25 秒。

为了优化查询,我现在尝试使用 Oracle Text..

CREATE INDEX xx_name ON xx(name) INDEXTYPE IS CTXSYS.CONTEXT

创建此索引后,过滤记录的查询需要不到一秒钟的时间

select * from xx where contains(name,'JOHN') > 0

但是,由于我无法找到很多关于 oracle 文本的文档,我担心/担心此类索引的其他影响。

例如。该表平均添加 5000 行,而每天更新 1000 万行。

在这种情况下使用 Oracle Text 是否有任何影响/是否有任何其他方法可以加速此查询。

此外,我无法在创建域索引时指定表空间,当我删除它时,它甚至没有出现在回收站中!!!

提前致谢。

标签: oracle12coracle-text

解决方案


推荐阅读