pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
函数索引定义在一个函数应用于单个表的一列或多列所得的结果上。函数索引可用于基于函数调用的结果快速访问数据。
例如,进行大小写不敏感比较的一种常见方式,是使用lower函数:
SELECT * FROM test1 WHERE lower(col1) = 'value';
如果在lower(column)操作的结果上定义了索引,这个查询就可以使用该索引:
CREATE INDEX test1_lower_col1_idx ON test1 (lower(col1));
索引定义中的函数可以接受多个参数,但这些参数必须是表的列,而不能是常量。函数索引始终是单列的(即函数的结果),即使函数使用了多个输入字段;不存在包含函数调用的多列索引。
上一段中提到的限制很容易绕过:定义一个自定义函数用在索引定义中,在内部计算任何想要的结果即可。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。