sql优化----不同写法下group by 的影响

本文探讨了SQL查询优化,特别是GROUP BY语句在不同写法下的性能差异。通过对比原版和重写后的SQL,发现以经销商为维度的分组效率更高,而增加车系维度导致查询变慢。合理使用索引可以显著提升查询效率,但GROUP BY后的字段选择至关重要。
摘要由CSDN通过智能技术生成

今天要对实现这样的一个统计效果的sql进行优化。


分析:可以看出此统计是要求针对经销商,车系两个维度对试驾次数和潜客数两个指标进行统计,试驾率是由这两个指标进行计算而得到。

1、维度:经销商,车系

2、指标:试驾次数,潜客数

原版sql如下:

分析问题:此sql给人的第一印象就是用了子查询效率低,事实它确实特别慢。而且对于不熟悉业务的人来说想看懂很痛苦。

    所以我选择了重写。

仔细分析其实现:

                分别计算各经销商不同车系的试驾次数,潜客数作为子查询,然后用left  join 将其连接起来。

  这里就把纬度降低到了经销商,故group by 语句后面只是按经销商分组。

SELECT
	t_dealer.t_org_rboid AS rboId,
	org_rbo.namechn AS rboName,
	t_dealer.id AS dealerId,
	t_dealer.namechn AS namechnName,
	t_dealer. CODE AS namechnCode,
	t_dealer.t_org_smallregionid AS smallregionId,
	org_smallregion.namechn AS smallregionName,
	yxsjcs_temp.*, qks_temp.*
FROM
	(
		SELECT
			dealer.id AS dealer_id
		FROM
			t_dealer dealer
		WHERE
			dealer.isdel = 0
	) AS dealer_temp
LEFT JOIN (
	SELECT
		dealer.id AS yxsjcsDealerId,
		SUM( CASE  WHEN carline_model.t_carline_id = '84e46cf1-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值