如何创建Oracle功能索引?

时间:2013-03-26 02:29:31

标签: oracle indexing

只是一个简单的问题,如何在此查询中创建基于函数的索引。

select * from mytable A where :var1 like A.fld1 || '%';

mytable在fld1上有一个普通的非唯一索引。

2 个答案:

答案 0 :(得分:1)

您不在查询上创建基于函数的索引,而是在函数上创建它。你拥有的是一个操作员,而不是一个功能。

你想要做的是找到表中fld1与var1开始的字符匹配的所有行,并且帮助你的那个行只是fld1上的一个。您可能希望的最佳计划可能是快速全索引扫描,因为这不适用于范围扫描。

答案 1 :(得分:0)

好吧,你可以为你在查询中使用的表达式创建一个基于函数的索引:

create index myindex on mytable (fld1 || '%');

但是,这个查询不太可能带来任何好处。我会说fld1上你正常的非唯一索引和基于函数的索引一样好。