私は 4 つのテーブルを持っています: ドメイン: :has many => channels:has_many => sales:has_many => visits
このクエリで、すべてのドメイン、チャネル数、販売数、および各ドメインの訪問数を取得しようとしています。
SELECT
kd.id, kd.domain,
COUNT(distinct kc.id) AS channels_count,
COUNT(distinct kv.id) AS visits_count,
COUNT(distinct kv.ip_address) AS visitors_count,
COUNT(distinct ks.id) AS sales_count
FROM
domains AS kd
LEFT JOIN
channels AS kc
ON(kc.domain_id=kd.id)
LEFT JOIN
sales AS ks
ON(ks.channel_id=kc.id)
LEFT JOIN
visits AS kv
ON(kv.channel_id=kc.id)
GROUP BY kd.id
売上高と訪問数のテーブルに数千のレコードがありますが、大きなものはありませんが、クエリには永遠に時間がかかります。それは決して戻ってこない。理由はありますか?
デシベル:postgresql