domian index域索引和全文索引

域索引的介绍

域索引(domain index)是为特殊领域设计的索引,比如空间和图像处理。用户可以使用indextype来创建域索引。


INDEXTYPE

indextype封装了查询和检索复杂domains的方法,比如文本,空间,图像等等。


其中context就是对文本信息进行处理的indextype。


CONTEXT

使用context创建的domain index就是文本索引。文本索引有3种分析器(lexer)

basic_lexer:针对英语

chinese_vgram_lexer字段字数越多,fulltext也就越大。

chinese_lexer:只支持utf8,效率更高

 

文本索引的创建

--赋予ctx_ddl权限

grant execute on ctx_ddl to public;

--生成以chinese_vgram_lexer方式分析和生成的lexer---context_lexer(我库的字符集是GBK)

exec ctx_ddl.create_preference ('context_lexer', 'chinese_vgram_lexer');

 

--使用lexer---context_lexer创建全文索引

CREATE INDEX "KMOA"."CTX_IDX_DI_DOCBODY" ON "KMOA"."DOCINFO" ("DOCBODY")  INDEXTYPE IS "CTXSYS"."CONTEXT" PARAMETERS ('lexer context_lexer')


 CREATE INDEX "KMOA"."CTX_IDX_DI_DOCREADERS" ON "KMOA"."DOCINFO" ("DOCREADERS")   INDEXTYPE IS "CTXSYS"."CONTEXT" PARAMETERS ('lexer context_lexer')


全文索引的使用场景

1.需要使用indextype的情景,比如扫描这些索引

2.操作符包含containsoverlaps


contains和like的区别

like:like 操作符会使用全表扫描like '%...%'这样的查询条件,CBO会默认可选择率5%来评估结果集的cardinaliy值

contains:可以使用全文索引来扫描full text,效率较高。创建全文索引时应该选择好lexer的类型,并及时进行维护。

比如




第二条sql的成本值就高很多,效率也更低,可见domain index在特殊领域还是非常有用的




全文索引维护


 将ctx_ddl.optimize_index, ctx_ddl.sync_index分别写进job里,定时运行


BEGIN

  ctx_ddl.sync_index('ctx_idx_di_user');

  ctx_ddl.sync_index('ctx_idx_di_flsubject');

  ctx_ddl.sync_index('ctx_idx_di_filetype');

  ctx_ddl.sync_index('ctx_idx_di_wfname');

  ctx_ddl.sync_index('ctx_idx_di_htmlbody');

  ctx_ddl.sync_index('ctx_idx_di_docbody');

  ctx_ddl.sync_index('ctx_idx_di_docreaders');

  ctx_ddl.sync_index('ctx_idx_di_docgroups');

  ctx_ddl.sync_index('ctx_idx_di_docroles');

  ctx_ddl.sync_index('ctx_idx_di_WFPU');

  ctx_ddl.sync_index('ctx_idx_di_WFPROCESSOR');

  ctx_ddl.sync_index('ctx_idx_di_FILENUMBER');

  ctx_ddl.sync_index('ctx_idx_di_FLSLEVEL');

  commit;

END;

 

EGIN

 ctx_ddl.optimize_index('ctx_idx_di_user','Full');

 ctx_ddl.optimize_index('ctx_idx_di_flsubject','Full');

 ctx_ddl.optimize_index('ctx_idx_di_filetype','Full');

 ctx_ddl.optimize_index('ctx_idx_di_wfname','Full');

 ctx_ddl.optimize_index('ctx_idx_di_htmlbody','Full');

 ctx_ddl.optimize_index('ctx_idx_di_docbody','Full');

 ctx_ddl.optimize_index('ctx_idx_di_docreaders','Full');

 ctx_ddl.optimize_index('ctx_idx_di_docgroups','Full');

 ctx_ddl.optimize_index('ctx_idx_di_docroles','Full');

 ctx_ddl.optimize_index('ctx_idx_di_WFPU','Full');

 ctx_ddl.optimize_index('ctx_idx_di_WFPROCESSOR','Full');

 ctx_ddl.optimize_index('ctx_idx_di_FILENUMBER','Full');

 ctx_ddl.optimize_index('ctx_idx_di_FLSLEVEL','Full');

  commit;

END;







参考资料:

https://docs.oracle.com/cd/B19306_01/appdev.102/b14289/dcidmnidx.htm

https://www.cnblogs.com/tracy/archive/2010/10/20/1856480.html

http://blog.itpub.net/8052309/viewspace-625296/



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuzhilongDBA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值