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 语法。
在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 语法。