【三十一、MySql】进阶篇--SQL优化--group by优化

文章探讨了在MySQL中如何通过建立索引来优化SQL查询性能。首先展示了未建索引时,groupby语句使用临时表和filesort的情况。接着,创建了age和phone的联合索引,发现查询计划开始利用索引。然而,当只依据phone分组时,虽仍走索引,但因不满足最左前缀规则,仍用到临时表和filesort。最后,通过调整查询条件,使查询遵循最左前缀法则,提高了查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,未建立索引
执行以下sql:explain select age,count(age) from t_input group by age; 查看执行计划,发现查询方式是使用临时表(Using temporary)和Using filesort
在这里插入图片描述

2,为age建立索引,再次执行上述sql,查看执行计划,走了索引
create index idx_input_age_phone on t_input(age,phone);;
在这里插入图片描述

3,2中索引不变,执行如下sql,查看执行计划,发现走索引,但不满足最左前缀法则走临时表和filesort
explain select phone,count(*) from t_input group by phone;
在这里插入图片描述

4,2中索引不变,分组条件依次为age、phone,执行如下sql,查看执行计划,满足前缀法则,走了索引
在这里插入图片描述

5,2中索引不变,执行如下sql,并查看执行计划,仍然满足最左前缀法则
explain select age,phone,count(*) from t_input where age = 20 group by phone;
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值