【问题标题】:Create view or table创建视图或表格
【发布时间】:2018-03-06 19:38:45
【问题描述】:

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

在此表中,您将获得 2 个个体的 ID 以及它们之间的相似度(它是一个介于 0 和 1 之间的数字,我将其乘以 100 并放入 smallint 以减少空间)。

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

但是,你可能知道,查询会很慢,所以我想:

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

由于个人大约有 170 万,因此搜索不会那么耗时(如果被编入索引,返回速度很快)。那么,我该怎么办?

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

【问题讨论】:

    标签: postgresql view create-table postgresql-9.6


    【解决方案1】:

    视图无济于事,但 materialized view 听起来很合适,如果您可以在物化视图更新时对大表进行顺序扫描。

    它可能应该包含每个用户的一行,每个百分位范围的计数。

    或者,您可以将聚合数据存储在一个独立的表中,只要大表发生变化,该表就会由大表上的触发器进行更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      相关资源
      最近更新 更多