Database 为两个varchar列编制索引,以便使用字符串连接进行查询
我在postgres表中有两个varchar列A和B,行数超过1000行。我想使用字符串连接从表中选择*进行查询,其中A | | B类似于“字符串%”。我如何制作一个索引来加速这个查询?我尝试为这两列创建单独的索引或索引,但我不适用于查询。这应该有帮助:Database 为两个varchar列编制索引,以便使用字符串连接进行查询,database,postgresql,indexing,Database,Postgresql,Indexing,我在postgres表中有两个varchar列A和B,行数超过1000行。我想使用字符串连接从表中选择*进行查询,其中A | | B类似于“字符串%”。我如何制作一个索引来加速这个查询?我尝试为这两列创建单独的索引或索引,但我不适用于查询。这应该有帮助: create index on the_table ((a||b) varchar_pattern_ops); 注意varchar\u pattern\u ops参数。为了使索引可用于类似于的查询,这是必需的 您的查询必须使用与索引中使用的表
create index on the_table ((a||b) varchar_pattern_ops);
注意varchar\u pattern\u ops
参数。为了使索引可用于类似于的查询,这是必需的
您的查询必须使用与索引中使用的表达式(a | | b
)完全相同的表达式(),否则将永远不会使用它。条件必须具有足够的选择性,以保证索引的使用。如果查询将返回表中相当大比例的行,那么使用索引可能没有意义。如果您的条件只返回几千行,那么优化器可能会使用它
创建索引后,不要忘记运行分析。这应该有帮助:
create index on the_table ((a||b) varchar_pattern_ops);
注意varchar\u pattern\u ops
参数。为了使索引可用于类似于
的查询,这是必需的
您的查询必须使用与索引中使用的表达式(a | | b
)完全相同的表达式(),否则将永远不会使用它。条件必须具有足够的选择性,以保证索引的使用。如果查询将返回表中相当大比例的行,那么使用索引可能没有意义。如果您的条件只返回几千行,那么优化器可能会使用它
创建索引后,不要忘记运行analyze
。您能否调整搜索字符串而不是列,以便只使用一列?您有什么样的数据?我知道,最好是避免此类查询,但我没有邀请此查询,这是其他人的查询:-(.您能否调整搜索字符串而不是列,以便只使用一列?您有什么样的数据?我知道,最好是避免此类查询,但我没有邀请此查询,这是其他人的查询:-(.thanx很多,有了这个索引它就可以工作。没有索引的postgres在表上进行Seq扫描的成本非常高。创建索引后,使用位图堆扫描进行查询。成本仅为没有索引的成本的三分之一。非常好。thanx很多,有了这个索引它就可以工作。没有索引的postgres在表上进行Seq扫描的成本非常高成本。创建索引后,使用位图堆扫描进行查询。成本仅为无索引成本的三分之一。非常好。