PostgreSQL 中 varchar 列的索引长度

Index length for varchar column in PostgreSQL

在MySQL中我们可以这样设置将被索引的字段的长度:

CREATE INDEX part_of_name ON customer (name(10));

我们可以在 PostgreSQL 中做同样的事情吗?如果是,那又如何?

我不知道有什么方法可以直接执行此操作,但 Postgres 支持表达式索引,因此您可以通过索引 substring 调用来获得相同的行为:

CREATE INDEX part_of_name ON customer (SUBSTRING(customer_name FOR 10));

如果数据类型允许修改长度,语法接近:

create index part_of_name on customer((customer_name::varchar(10)));

Here is an example这个索引怎么用;您必须在条件中使用相同的类型。

对于 text 我认为@Mureinik 的建议是唯一的选择。实际上,强制转换的索引无论如何都是基于表达式的索引,所以我的答案有点相同,但更接近 OP 语法。