创建视图或表

时间:2018-03-06 19:38:46

标签: postgresql view create-table postgresql-9.6

我的桌子大约有3 * 10 ^ 12行(3万亿),但只有3个属性。

在此表中,您将拥有2个人的ID以及他们之间的相似性(它是介于0和1之间的数字,我乘以100并将其作为小数据来减少空间)。

事实证明,对于我想要进行研究的某个人,我需要执行这些列的汇总,并返回有多少个人具有高达10%的相似性,20%,30%。这些值是固定的(每10个),直到相同的个体(100%)。

然而,正如您所知,查询将非常缓慢,所以我想到了:

  • 创建新表以保存汇总值
  • 创建一个VIEW以保存这些值。

由于个人约为170万,搜索不会如此耗时(如果已编入索引,则返回速度非常快)。那么,我该怎么办?

我想指出我的人口几乎是固定的(在数据库完全填充后,预计几乎不会增加)。

1 个答案:

答案 0 :(得分:1)

一个视图无济于事,但如果物化视图更新后,如果能够负担大型表的顺序扫描,那么materialized view听起来就像是符合条件的那样。

每个用户可能包含一行,每个百分位数都有一个计数。

或者,您可以将聚合数据存储在一个独立的表中,只要有更改,就会通过大表上的触发器进行更新。