Postgresql 中文操作指南

11.11. Indexes and Collations #

一个索引只能支持每个索引列一种校对规则。如果有多个校对规则,则可能需要多个索引。

考虑以下陈述:

CREATE TABLE test1c (
    id integer,
    content varchar COLLATE "x"
);

CREATE INDEX test1c_content_index ON test1c (content);

索引会自动使用基础列的校对规则。因此,如下形式的查询

SELECT * FROM test1c WHERE content > constant;

可以使用索引,因为比较在默认情况下会使用列的校对规则。但是,此索引无法加速涉及其他校对规则的查询。因此,如果如下形式的查询

SELECT * FROM test1c WHERE content > constant COLLATE "y";

也很相关,则可以创建一个支持 "y" 校对规则的额外索引,如下所示:

CREATE INDEX test1c_content_y_index ON test1c (content COLLATE "y");