mysql查询优化~group by知多少
一 简介:聊聊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知多少相关推荐
- MySQL查询优化:GROUP BY
目录 一.group by group by 优化方法 - 索引 松散索引扫描(Loose Index Scan) 为什么松散索引扫描的效率会很高? 紧凑索引扫描(Tight Index Scan) ...
- MySQL高级-索引是个什么东西?explain到底怎么用-MySQL查询优化大全
目录 一.引出问题-MySQL的查询优化: 二.性能下降的原因: 三.索引到底是什么?怎么用? 1.索引操作 查看索引: 删除索引: 创建索引: 说明: 索引命名规范: 2.索引优势: 3.索引劣势: ...
- MySQL查询优化-explain
2019独角兽企业重金招聘Python工程师标准>>> 一.MySQL 查询优化器是如何工作的 MySQL 查询优化器有几个目标,但是其中最主要的目标是尽可能地使用索 ...
- MySQL查询优化之explain的深入解析
在分析查询性能时,考虑EXPLAIN关键字同样很管用.EXPLAIN关键字一般放在SELECT查询语句的前面,用于描述MySQL如何执行查询操作.以及MySQL成功返回结果集需要执行的行数.expla ...
- mysql优化php面试_php面试专题---18、MySQL查询优化考点
php面试专题---18.MySQL查询优化考点 一.总结 一句话总结: 慢查询:查找分析查询速度慢的原因 数据访问:优化查询过程中的数据访问 长难句:优化长难的查询语句 特定类型:优化特定类型的查询 ...
- mysql查询优化之三:查询优化器提示(hint)
目录: <MySQL中的两种临时表>--强制使用临时表 SQL_BUFFER_RESULT <MySQL 多表关联更新及删除> <mysql查询优化之三:查询优化器提示( ...
- MySql查询优化性能调优,sql性能自测方法,及Mysql索引介绍
MySql查询优化性能调优,sql性能自测方法,及Mysql索引介绍 前言 一.普通优化加索引(适用于where条件后一个查询条件) 二.组合查询加索引(适用于where条件后多个查询条件) 三.My ...
- MySQL查询优化详解
mysql 查询优化-查询执行的路径 mysql 客户端/服务端通信 查询缓存 查询优化处理 查询执行引擎 返回客户端 mysql 客户端/服务端通信 Mysql客户端与服务端的通信方式是" ...
- MYSQL查询优化器
MYSQL 逻辑结构 MySQL 使用典型的客户端/服务器(Client/Server)结构, 体系结构大体可以分为三层:客户端.服务器层以及存储引擎层.其中,服务器层又包括了连接管理.查询缓存 .S ...
- MySQL查询优化之十-ORDER BY优化(ORDER BY Optimization)
MySQL查询优化之十-ORDER BY优化(ORDER BY Optimization) 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:1295180 ...
最新文章
- Arduino超声波测距程序
- HDU 1233 还是畅通工程。
- 【转载】jQuery插件开发精品教程,让你的jQuery提升一个台阶
- adr和ldr的区别
- 多种思路给js文件传递参数
- php当前完整url的写法
- 虚拟网卡实现一个网卡多个地址
- 聚类算法-K均值(K-means)
- Com uma forca, com uma forca
- mysql long类型格式_MySQL 数据类型
- 光学仿真(python菲涅尔公式)
- KMP的next迷思
- Matlab 批量保存图片
- Web 安全工具篇:Burp Suite 使用指南
- Hea First ServletJSP 4.request And response
- Python批量PNG转换成JPGE设置quality=99
- 2018 杭州见习报告
- 电子商务设计师书籍的记录
- potPlayer弹窗不支持HEVC(H265)解码
- 联诚发(LCF)全彩LED显示屏在多领域大放异彩
热门文章
- 来看看深度学习如何在文娱行业“落地”
- 《Java程序员职场全功略:从小工到专家》连载六:亚洲企业工作模式
- .NET程序员面试指南:设计窗口程序演示八皇后问题
- NLP中GLUE数据集下载
- C++基础学习笔记:第一章、第二章
- 力扣-1508 子数组和排序后的区间和
- 解决Ubuntu18.04使用快捷键 Ctrl+Alt+T 无法打开终端的问题
- rk3399_android7.1调试lsm9ds1三合一sensor记录
- MySQL 5.7 自带的四个数据库 介绍
- CF#213DIV2:B The Fibonacci Segment