使用字符串连接为查询索引两个varchar列

时间:2015-01-20 15:42:07

标签: database postgresql indexing

我在postgres表中有两个varchar列A和B,行数超过1 000 000。我想使用字符串连接SELECT *从表WHERE A || B中查询' string%' 。如何创建一个可以加快此查询速度的索引?我尝试为两列创建单独的索引或索引,但我不适用于查询。

1 个答案:

答案 0 :(得分:4)

这应该有所帮助:

create index on the_table ((a||b) varchar_pattern_ops);

请注意varchar_pattern_ops参数。为了使索引可用于LIKE查询,需要这样做。

您的查询必须使用完全与索引中使用的相同表达式(a||b),否则将永远不会使用它。条件必须足够有选择性以保证索引的使用。如果您的查询将返回表中大部分行,则使用索引可能没有意义。如果您的条件仅返回几千行,则优化程序可能会使用它。

创建索引后不要忘记运行analyze