大型Postgres表的最佳实践

问题描述 投票:0回答:1

我有一个表,其中包含3个字段(用户名,target_value,score),该字段由用户名(〜400,000)和target_value(〜4000)的全数和外部计算生成的分数,导致总行数约为16亿。

我在此表上的所有查询都将采用]的格式>

SELECT *
FROM _table
WHERE target_values IN (123, 456)

我的初始版本包括一个关于target_values的BTREE索引,但是我最终花了45分钟时间对该索引进行了BITMAP HEAP SCAN。我也一直在研究BRIN索引,分区和表集群,但是由于将每种方法应用于表需要花费数小时,因此我无法完全蛮力地对每个选项进行性能测试。

在Postgres 10中处理具有非常“块状”数据的单个海量表有什么建议?

我有一个表,其中包含3个字段(用户名,target_value,分数),该字段由用户名(〜400,000)和target_value(〜4000)的全数和计算出的分数在外部生成,从而导致总行数...

database postgresql indexing database-partitioning
1个回答
0
投票

如果表是两个数据集的交叉联接,为什么不存储单个表并根据需要计算联接?数据库擅长于此。

根据您的描述,如果您在表上运行CLUSTER以物理方式按索引顺序对其进行重写,那么我期望性能得到提高。然后,您将不得不访问较少的表块。

© www.soinside.com 2019 - 2024. All rights reserved.