我有一张如下表:
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 是否有任何影响/是否有任何其他方法可以加速此查询。
此外,我无法在创建域索引时指定表空间,当我删除它时,它甚至没有出现在回收站中!!!
提前致谢。