私のアプリケーションでは、2 つの MySQL テーブル、「ユニット」と「インプレッション」が 1 対多の関係にあります。units テーブルからすべての広告ユニットのリストを取得する必要がありますが、各広告ユニットのインプレッション数も取得する必要があります。
このタスクを実行するための 2 つの SELECT クエリがあります (この例では単純化されています)。最初にサブセレクトを使用します。
SELECT
(SELECT COUNT(*) FROM impressions WHERE impression_unit_id = unit_id) AS impressions_count,
unit_id
FROM units;
次に GROUP BY を使用します。
SELECT
COUNT(impression_id) AS impressions_count,
unit_id
FROM units
LEFT JOIN impressions ON impression_unit_id = unit_id
GROUP BY unit_id;
サブセレクト クエリはレコード (広告ユニット) ごとに実行されるため、GROUP BY の方がスマートに見えますが、JOIN が 1 つ多くなっています。パフォーマンスのためにどちらを優先しますか?