历史版本。 PostgreSQL 7.2 已结束支持。 请参阅 当前版本手册.
7.5. 函数索引 #
函数索引定义在一个函数应用于单个表的一列或多列所得的结果上。函数索引可用于基于函数调用的结果快速访问数据。
例如,进行大小写不敏感比较的一种常见方式,是使用lower函数:
SELECT * FROM test1 WHERE lower(col1) = 'value';
如果在lower(column)操作的结果上定义了索引,这个查询就可以使用该索引:
CREATE INDEX test1_lower_col1_idx ON test1 (lower(col1));
索引定义中的函数可以接受多个参数,但这些参数必须是表的列,而不能是常量。函数索引始终是单列的(即函数的结果),即使函数使用了多个输入字段;不存在包含函数调用的多列索引。
提示
上一段中提到的限制很容易绕过:定义一个自定义函数用在索引定义中,在内部计算任何想要的结果即可。