7.5. 函数索引

对于函数索引(functional index), 它是定义在一个函数的结果上的,这个函数对某一个表的一个或多 个字段进行操作。 函数索引可 以用于获得对那些基于函数调用结果数据的快速访问.

比如,做大小写无关比较的常用方法是使用函数 lower

SELECT * FROM test1 WHERE lower(col1) = 'value';
为了让这个查询可以用上索引,我们必须在 lower(column) 操作的结果上定义索引∶
CREATE INDEX test1_lower_col1_idx ON test1 (lower(col1));

在索引定义里的函数可以接受更多个参数,但是这些参数 都必须是表的字段,而不能是常量.函数索引总是单字段 索引(也就是函数的结果),即使函数有多个输入域也如此; 不可能有包含函数调用的多字段索引.

技巧: 上面那段提到的约束可以很容易通过在索引定义中使用 客户化定义的函数来绕开,这些函数只要在内部调用所 需要的函数就可以了.