postgresql连表和分组查询的先后顺序查询效率

本文记录一下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条数据连表查询

有遇到类似问题的小伙伴可以试试,有问题的也请大家指出指导指导

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值