码迷,mamicode.com
首页 > 数据库 > 详细

mysql中group by优化

时间:2020-07-26 19:33:13      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:形式   依赖   sele   利用   服务   min   span   mysq   业务   

如果需要对关联查询(inner join)做分组(group by),并且按照关联表(actor)中的某个列进行分组,那么通常采用关联表(actor)的标识列(actor_id)分组的效率比其他列更高:

select actor.first_name,actor.last_name,count(*) from film_actor inner join actor using(actor_id) group by actor.actor_id;

替换了

group by actor.first_name,actor.last_name

这个查询利用了演员的姓名(first_name和last_name)和actor_id直接相关的特点,但是不是所有的关联语句的查询都可以改写成select中直接使用非分组列(first_name,last_name)的形式的。甚至服务器设置sql_mode(ONLY_FULL_GROUP_BY)来禁止这样的写法。如果是这样,可以用min(),max()函数绕过这样的限制,但是一定要清楚,select后面出现的非分组列一定是直接依赖分组列,并且在每一个组内的值是唯一的,或者业务根本不在乎这个值具体是什么。

select min(actor.first_name),max(actor.last_name) .......

 

mysql中group by优化

标签:形式   依赖   sele   利用   服务   min   span   mysq   业务   

原文地址:https://www.cnblogs.com/nizuimeiabc1/p/13381278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!