在我的应用程序中,我有两个 MySQL 表,'units' 和 'impressions' 是一对多的关系。我需要从单位表中获取所有广告单元的列表,还需要获取每个广告单元的展示次数。
我有两个 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。性能更喜欢哪一个?