0

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

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

mytable 在 fld1 上有一个正常的、非唯一的索引。

4

2 回答 2

1

您不会在查询上创建基于函数的索引,而是在函数上创建它。你所拥有的是一个运算符,而不是一个函数。

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

于 2013-03-26T09:40:10.213 回答
0

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

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

但是,它不太可能对这个查询有任何好处。我想说你在 fld1 上的普通非唯一索引将与基于函数的索引一样工作。

于 2013-03-26T07:02:56.257 回答