我在postgres表中有两个varchar列A和B,行数超过1 000 000。我想使用字符串连接SELECT *从表WHERE A || B中查询' string%' 。如何创建一个可以加快此查询速度的索引?我尝试为两列创建单独的索引或索引,但我不适用于查询。
答案 0 :(得分:4)
这应该有所帮助:
create index on the_table ((a||b) varchar_pattern_ops);
请注意varchar_pattern_ops
参数。为了使索引可用于LIKE
查询,需要这样做。
您的查询必须使用完全与索引中使用的相同表达式(a||b
),否则将永远不会使用它。条件必须足够有选择性以保证索引的使用。如果您的查询将返回表中大部分行,则使用索引可能没有意义。如果您的条件仅返回几千行,则优化程序可能会使用它。
创建索引后不要忘记运行analyze
。