我有一个包含几百万行的 Postgres 9.1.4 表。一个非常小的版本可能是这样的:
掌握
index location
----------------
1 A
2 C
3 B
4 C
5 C
6 A
我需要对位置字段中的每个不同值进行昂贵的计算。我不想使用主表中的这个字段,因为我会重复处理同一个位置。我想要一个具有不同location值的表,计算结果将存储在计算字段中:
清楚的
index location calculation
------------------------------
1 A' X
2 C' Y
3 B' Z
填充distinct后, master和distinct之间的关系不容易确定。我必须做一些数据操作才能使位置在计算中起作用。我真的需要第三张表,大致在我填充distinct的同时创建,以帮助我将 distinct 中的每个条目与master中的父项相关联。
第三个表可能如下所示:
相关性
master_index distinct_index
------------------------------
1 1
2 3
3 2
4 3
5 3
6 1
问题是我看不到如何使用任何简单的 SQL 来完成。我可以使用这样的东西作为查询的开头来填充distinct:
SELECT location, array_agg(index)
FROM master
GROUP BY location;
问题是我需要另一个不同的数组列来保存这些值,然后我需要使用其他一些程序来解析数组并构造相关表。
我错过了一种更简单的方法吗?