【发布时间】:2019-03-31 14:33:42
【问题描述】:
我在 PostgreSQL 中有一个表,它有 20 列,大部分是枚举类型。这个表有数百万行。
我想支持并加快搜索具有多个字段的行的查询,例如:col2=value1&col3=value2&col5=value3 page=1
我不能使用 PostgreSQL 的复合索引,
因为它只适用于固定的列顺序。例如,如果我在(col2,col3,col5) 上建立索引,则它不能用于搜索col1=value1&col2=value2 的查询
我还想支持以下查询:
col1=value1&col2=(value3 or value4) orderby=col3 page=1
有什么办法可以解决这个问题?如果我不需要对这些列中的任何一个进行全文搜索(因为它们都是枚举类型),那么解决方案可以是轻量级的吗?
【问题讨论】:
-
col1...col20 的 distinct 组合有多少种?
-
我会说任何列可能有数百种不同的组合
-
您可以将它们收集到一个单独的表中,由单个(代理)键寻址。
标签: postgresql database-indexes