一 简介:聊聊group by的分组
二 explain体现
    extra下
   1 using tempoary
   2 using tempoary && using filesort
   3 using filesort
   4 none
三 实现方式
  1 定义
    GROUP BY 实际上也同样会进行排序操作,而且与ORDER BY 相比,GROUP BY 主要只是多了排序之后的分组操作。当然,如果在分组的时候还使用了其他的一些聚合函数,那么还需要一些聚合函数的计算。所以,在GROUP BY 的实现过程中,与 ORDER BY 一样也可以利用到索引。
  2 实现方式
    使用松散(Loose)索引扫描实现 GROUP BY 
   1 单一表查询
   2 Group by中只有最左前缀列,没有其他列
   3 只支持max和min聚合,而且,要聚合的列必须是group by中列所在的索引(未测试)
   4 未被group by引用的索引其他部分必须是常量(不理解)
   5 不支持前缀索引。
  eg
   -- 因为聚合函数不是max或者min
  SELECT c1, SUM(c2) FROM t1 GROUP BY c1;
  -- 因为不符合最左前缀原则
  SELECT c1, c2 FROM t1 GROUP BY c2, c3;
  -- 查询涉及到了索引的一部分,紧跟group by中的列,但是没有常量等值语句,加上 WHERE c3 = const就好了
  SELECT c1, c3 FROM t1 GROUP BY c1, c2;
  2 使用临时表实现 GROUP BY
    处理过程 通过where索引过滤 然后放置在临时表中再进行分组+排序
四 优化
  1 尽量使用group by 的分组利用到联合索引
  2 尽量添加order by null避免filesort
五 总结
本文不保证正确性,资料来源 https://www.cnblogs.com/wingsless/p/5040620.html,只是做总结标记

转载于:https://www.cnblogs.com/danhuangpai/p/10845483.html

mysql查询优化~group by知多少相关推荐

  1. MySQL查询优化:GROUP BY

    目录 一.group by group by 优化方法 - 索引 松散索引扫描(Loose Index Scan) 为什么松散索引扫描的效率会很高? 紧凑索引扫描(Tight Index Scan) ...

  2. MySQL高级-索引是个什么东西?explain到底怎么用-MySQL查询优化大全

    目录 一.引出问题-MySQL的查询优化: 二.性能下降的原因: 三.索引到底是什么?怎么用? 1.索引操作 查看索引: 删除索引: 创建索引: 说明: 索引命名规范: 2.索引优势: 3.索引劣势: ...

  3. MySQL查询优化-explain

    2019独角兽企业重金招聘Python工程师标准>>> 一.MySQL 查询优化器是如何工作的         MySQL 查询优化器有几个目标,但是其中最主要的目标是尽可能地使用索 ...

  4. MySQL查询优化之explain的深入解析

    在分析查询性能时,考虑EXPLAIN关键字同样很管用.EXPLAIN关键字一般放在SELECT查询语句的前面,用于描述MySQL如何执行查询操作.以及MySQL成功返回结果集需要执行的行数.expla ...

  5. mysql优化php面试_php面试专题---18、MySQL查询优化考点

    php面试专题---18.MySQL查询优化考点 一.总结 一句话总结: 慢查询:查找分析查询速度慢的原因 数据访问:优化查询过程中的数据访问 长难句:优化长难的查询语句 特定类型:优化特定类型的查询 ...

  6. mysql查询优化之三:查询优化器提示(hint)

    目录: <MySQL中的两种临时表>--强制使用临时表 SQL_BUFFER_RESULT <MySQL 多表关联更新及删除> <mysql查询优化之三:查询优化器提示( ...

  7. MySql查询优化性能调优,sql性能自测方法,及Mysql索引介绍

    MySql查询优化性能调优,sql性能自测方法,及Mysql索引介绍 前言 一.普通优化加索引(适用于where条件后一个查询条件) 二.组合查询加索引(适用于where条件后多个查询条件) 三.My ...

  8. MySQL查询优化详解

    mysql 查询优化-查询执行的路径 mysql 客户端/服务端通信 查询缓存 查询优化处理 查询执行引擎 返回客户端 mysql 客户端/服务端通信 Mysql客户端与服务端的通信方式是" ...

  9. MYSQL查询优化器

    MYSQL 逻辑结构 MySQL 使用典型的客户端/服务器(Client/Server)结构, 体系结构大体可以分为三层:客户端.服务器层以及存储引擎层.其中,服务器层又包括了连接管理.查询缓存 .S ...

  10. MySQL查询优化之十-ORDER BY优化(ORDER BY Optimization)

    MySQL查询优化之十-ORDER BY优化(ORDER BY Optimization) 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:1295180 ...

最新文章

  1. Arduino超声波测距程序
  2. HDU 1233 还是畅通工程。
  3. 【转载】jQuery插件开发精品教程,让你的jQuery提升一个台阶
  4. adr和ldr的区别
  5. 多种思路给js文件传递参数
  6. php当前完整url的写法
  7. 虚拟网卡实现一个网卡多个地址
  8. 聚类算法-K均值(K-means)
  9. Com uma forca, com uma forca
  10. mysql long类型格式_MySQL 数据类型
  11. 光学仿真(python菲涅尔公式)
  12. KMP的next迷思
  13. Matlab 批量保存图片
  14. Web 安全工具篇:Burp Suite 使用指南
  15. Hea First ServletJSP 4.request And response
  16. Python批量PNG转换成JPGE设置quality=99
  17. 2018 杭州见习报告
  18. 电子商务设计师书籍的记录
  19. potPlayer弹窗不支持HEVC(H265)解码
  20. 联诚发(LCF)全彩LED显示屏在多领域大放异彩

热门文章

  1. 来看看深度学习如何在文娱行业“落地”
  2. 《Java程序员职场全功略:从小工到专家》连载六:亚洲企业工作模式
  3. .NET程序员面试指南:设计窗口程序演示八皇后问题
  4. NLP中GLUE数据集下载
  5. C++基础学习笔记:第一章、第二章
  6. 力扣-1508 子数组和排序后的区间和
  7. 解决Ubuntu18.04使用快捷键 Ctrl+Alt+T 无法打开终端的问题
  8. rk3399_android7.1调试lsm9ds1三合一sensor记录
  9. MySQL 5.7 自带的四个数据库 介绍
  10. CF#213DIV2:B The Fibonacci Segment