数百万行の 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
マスターと個別の関係は、個別に設定された後は簡単には判断できません。計算で位置を機能させるには、少しデータ操作を行う必要があります。3 番目のテーブルが本当に必要です。これは、 distinctに入力するのとほぼ同時に作成され、distinctの各エントリをmasterの親に関連付けるのに役立ちます。
3 番目のテーブルは次のようになります。
相関
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;
問題は、これらの値を保持するために別個の別の配列列が必要になることです。その後、後で他のプログラムを使用して配列を解析し、相関テーブルを作成する必要があります。
これを行う簡単な方法がありませんか?