PostgreSQL中varchar列的索引长度

时间:2018-03-08 07:49:42

标签: mysql postgresql indexing

在MySQL中,我们可以设置以这种方式索引的字段的长度:

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

如果数据类型允许修改长度,则语法结束:

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

Here is an example如何使用此索引;你必须在条件中使用相同的类型。

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