本文记录一下postgresql使用连表查询和分组查询的先后顺序查询效率
以下数据场景根据是虚构方便理解,数据量和查询速度是出自于实际项目
一、主要表和字段
1、车辆入场表(car_into),字段:车辆id(car_id,跟车辆信息表id_关联),数据量1.5万条
2、车辆信息表(car_info),字段:车辆id(id_),车辆车牌号(car_number),数据量400条
二、场景
1、查询出一年内每辆车入场的次数,需要展示字段:车辆id、车辆车牌号
三、刚开始的查询
1、先连接查询出车牌号码,再根据车牌号码和车牌id分组查询,查询速度4s
SELECT COUNT(1),
cf.id_,
cf.car_number
FROM
car_into ct
LEFT JOIN car_info cf ON cf.id_ = ct.car_id
GROUP BY
cf.id_,
cf.car_number;
四、优化后的查询
1、先分组查询,再使用连接查询出车牌号码,查询速度1s
SELECT
al.*,
cf.car_number
FROM
( SELECT COUNT (1), ct.car_id FROM car_into ct GROUP BY ct.car_id ) al
LEFT JOIN car_info cf ON cf.id_ = al.car_id;
五、分析
1、先连表查询时,有1.5万条数据进行连表查询
2、先分组后连表查询,最多才400条数据连表查询
有遇到类似问题的小伙伴可以试试,有问题的也请大家指出指导指导