zoukankan      html  css  js  c++  java
  • MySQL 不同版本下的group by

    MySQL 不同版本下的group by

    大家有没有遇到过这样的坑,在测试站的sql执行得好好的,到线上就不行了。这里就来记录下我在使用mysqll分组查询所遇到的坑。

     

    1、 group by

    Group by 语句用于结合聚合函数(如count,sum,avg,max,min),根据一个或多个列对结果集进行分组。

     

    1)去掉重复值:根据group by后面的关键字只显示一行结果;

     

    2)mysql5.7默认开启参数ONLY_FULL_GROUP_BY,表示完全group by,即select后面跟的列group by后面也必须有,但是group by后面跟的列,select后面不一定需要出现

     

    3)mysql5.7group by 默认还有排序功能,8.0默认只分组不排序,需要加order by才排序,这点可以从执行结果是否有Using filesort来判断

     

     

     

    2. mysql8.0新特性

    1)group by 不再隐式排序

    mysql 8.0 对于group by 字段不再隐式排序,如需要排序,必须显式加上order by 子句。

    好处:在使用GROUP BY 这样的语句,在没有特殊优化的情况下,MYSQL 8 不在使用 FILESORT 排序后,速度有了大幅度的提升,这说明在没有优化的情况下,MYSQL 8 对于排序和GROUP BY 这样的查询时有利的,并且随着提取的数据越多,则越快,这对 开发者来说是一个好消息。

     

    测试站使用的是mysql5.7版本,线上使用的mysql8.0版本

  • 相关阅读:
    flex 居中并两端对齐
    搭建Docker环境---私有仓库registry搭建
    搭建Docker环境---常用命令
    搭建Docker环境---Docker安装(centos7)
    搭建Docker环境---Docker概述
    Shell脚本
    安装webstrom2019
    mysql主从配置
    MySql5.7安装(centos 7)
    MySQL父子节点查询
  • 原文地址:https://www.cnblogs.com/hld123/p/15752688.html
Copyright © 2011-2022 走看看