GROUP BY 在 Postgres 中的性能

Sah*_*hil 0 postgresql

我有一个大表(包含大量列的 2M+ 条记录)。我打算进行 GROUP BY 来进行重复数据删除。我想知道以下两种策略哪种效果更好?

  1. GROUP BY 多列(col_a, col_b, col_c)
  2. 添加一个新列 dedup_col,其中包含使用 col_a、col_b、col_c 形成的规范化字符串,然后对 dedup_col 执行 GROUP BY。dedup_col 将预先填充。

我知道我可以运行基准测试,但在开始实施之前我需要一些理论输入。

Joh*_*nFx 6

看在上帝的份上,请选择选项 1。不要求助于#2,除非您对#1 有严格的性能选项,并且您已经用尽了所有其他选项(包括索引)来解决它。

选项#2 是一个糟糕的主意。实际上,您正在通过实施穷人版本的索引来重新发明轮子......糟糕。

在发现性能问题之前,永远、永远、永远不要对数据进行反规范化(这就是您在选项 2 中所做的事情)以提高性能。即使那样,您可能也不应该这样做。

仅供参考:如果您正确设置了索引,200 万条记录并不是一个大数据库。