0
私は完全に一意の情報を保持する複数のテーブルをpostgresデータベースに持っています。この情報は、クエリで正しく結合されると、私が探しているすべての可能な組み合わせをすべて生成します。私が探している情報は完全なSKUです。 0.82秒のクエリ時間で、私は(インデックス適用なし)32640件のレコードを生成集計テーブルの行数
SELECT
materials.code,
"part_base_parts".code as part_base_parts_id,
shanks.code AS shank_id,
measurements.description
FROM
"part_base_parts"
LEFT JOIN "part_types" ON "part_base_parts"."part_type_id" = "part_types"."id"
RIGHT JOIN "parts_to_shanks" ON "part_base_parts"."id" = "parts_to_shanks"."part_base_part_id"
RIGHT JOIN "parts_to_measurements" ON "part_base_parts"."id" = "parts_to_measurements"."part_base_part_id"
RIGHT JOIN "parts_to_materials" ON "part_base_parts"."id" = "parts_to_materials"."part_base_part_id"
JOIN materials ON "parts_to_materials"."material_id" = materials."id"
JOIN shanks ON "parts_to_shanks"."shank_id" = shanks."id"
JOIN measurements ON "parts_to_measurements"."measurement_id" = measurements."id"
ORDER BY
part_base_parts_id ASC,
materials.code ASC,
shank_id ASC,
measurements.description ASC
このクエリを考えると 機能クエリ:
完全なSKUを生成するには、このクエリは、所望の結果を生成します。このような何か...
与えられた出力にのみしかし、私はそこに半分の方法を取得している
code part_base_parts_id shank_id description
AA 5105 A 03.0
.
. 32,638 rows in here.
.
ST 6939 D 9/16
。クエリから結果を取り戻し、各列からの合計数を生成する必要があります。だから私は持っている必要があり、結果は次のようになります。
望ましい結果
code: AA - ###0
...
ST - ###0
part_base_parts_id: 5105 - ###0
...
6939 - ###0
shank_id: A - ###0
...
D - ###0
description: 03.0 - ###0
...
9/16 - ###0
のPostgresからを「所望の結果」を生成する方法はあり?
「UNION ALL」の欠如。 'ORDER BY key、value'を追加します。 – klin
コピー/ペーストエラーを修正し、@klinの提案に従ってORDER BYを追加しました。 –
そのクエリは@ jakub-kaniaと@klinに作用しました!私は質問時間にヒットしました。 .82秒から最大3.7秒の最終結果が得られます。私はインデックスを研究し、それらにどのテーブルを適用するのか、そしてどのようにクエリに影響を与えるのかを見ていきます。パフォーマンス時間を増やすことを考えていますか? –