1
Rails 5.0アプリケーションでは、次のようなpostgresクエリがあります。最初のクエリは、基本的に国内と国際放送局(ラジオカテゴリ)とFMとAM(ラジオタイプ)による視聴率とグループを合計します。 2番目のクエリは、FM/AMによるすべての国内および国際放送局およびグループの視聴者数を合計します。postgresクエリのこの結合をより効率的にする方法は、マテリアライズドビューを使用することですか?
より効率的にするには、最終的にマテリアライズド・ビューで合計する必要がある数値のみをプルするためにraw SELECT文を入力してから、SUM()/ GROUP_BY文ビューから抜け出すには?
SUM()を巧みに使用していますが、私にはselect *
の生の数字が一度だけ表示されますか?
たとえば、少なくとも100万行のデータがあるとします。
SELECT numbers.snapshot_id,
count(*) AS radio_count,
sum(numbers.view_count) AS view_count,
radios.category AS radio_category,
radios.type AS radio_type,
CASE
WHEN radios.type = 'AM' THEN 0
WHEN radios.type = 'FM' THEN 1
END as radio_enum_type
FROM (numbers
JOIN radios ON ((radios.id = numbers.radio_id)))
GROUP BY numbers.snapshot_id, radios.category, radios.type
UNION
SELECT numbers.snapshot_id,
count(*) AS radio_count,
sum(numbers.view_count) AS view_count,
3 AS radio_category,
radios.type AS radio_type,
CASE
WHEN radios.type = 'AM' THEN 0
WHEN radios.type = 'FM' THEN 1
END as radio_enum_type
FROM (numbers
JOIN radios ON ((radios.id = numbers.radio_id)))
GROUP BY numbers.snapshot_id, 3::integer, radios.type
おかげで、それは、HTML内のデータを表示するだけですべてですので、私はで二回選択クエリを実行する必要がありますする非効率的なように見えたと思いました私が望む集計の合計を得るために別の 'group by'を使用しました。 – Nona