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