Mysql优化之GROUP BY语句优化
一、首先看Group By创建临时表的情况,因为有临时表的存在所以索引失效。
- 如果GROUP BY 的列没有索引,产生临时表
- 如果GROUP BY时,SELECT的列不止GROUP BY列一个,并且GROUP BY的列不是主键 ,产生临时表
- 如果GROUP BY的列有索引,ORDER BY的列没索引.产生临时表
- 如果GROUP BY的列和ORDER BY的列不一样,即使都有索引也会产生临时表
- 如果GROUP BY或ORDER BY的列不是来自JOIN语句第一个表.会产生临时表
- 如果DISTINCT 和 ORDER BY的列没有索引,产生临时表
分析
Mysql 是先执行内联表然后再进行条件查询的最后再分组,一旦先内联之后,数据就变的异常复杂。所以可以尝试一下提前进行分组和条件查询,实现方法就是子查询联合内联查询。
1、执行FROM语句
2、执行ON过滤
3、添加外部行
4、执行where条件过滤
5、执行group by分组语句
6、执行having
7、select列表
8、执行distinct去重复数据
9、执行order by字句
10、执行limit字句
方案:
SELECT
a.no,
SUM(a.aa) total,
b.bb
FROM
A a
INNER JOIN
B b
ON a.no=b.no
GROUP BY a.no
优化SQL一:
SELECT
a.no,
a.total,
b.bb
FROM
(SELECT no,SUM(aa) total FROM A GROUP BY no) a
INNER JOIN
B b
ON a.no=b.no
优化SQL二:
SELECT
a.no,
a.total,
b.bb
FROM
B b,
(SELECT no,SUM(aa) total FROM A GROUP BY no) A a
WHERE
a.no=b.no
Mysql优化之GROUP BY语句优化相关推荐
- Mysql删除语句优化_MySQL性能优化之常用SQL语句优化
SQL性能优化的目标:至少要达到range级别,要求是ref级别,consts最高.[阿里巴巴JAVA开发手册] 说明: 1).consts单表中最多只有一个匹配行(主键/唯一索引),在优化阶段即可读 ...
- mysql c where_mysql where条件语句优化笔记
where优化主要适用于SELECT查询,当然DELETE和UPDATE语句中也会涉及,这个要大家在平常多积累. 删除不必要的括号: ((a AND b) AND c OR (((a AND b) A ...
- mysql优化的几种方法_详解mysql数据库不同类型sql语句优化方法
概述 分享一下之前笔记记录的一些不同类型sql语句优化方法,针对mysql. 主要分成优化INSERT语句.优化ORDER BY语句.优化GROUP BY 语句.优化嵌套查询.优化OR语句这几个方面, ...
- mysql sql优化_MySQL数据库SQL语句优化原理专题(三)
需求 做过开发的同学,对分页肯定不会陌生,因为很多前台页面展示,为了更好的展示数据,就会用到分页,所以如何写一个高性能的分页SQL语句,是每一个开发人员需要掌握的技能. 分页SQL 这里给大家写一个分 ...
- MySQL优化之三:SQL语句优化
一 SQL语句优化的一般步骤: 1 通过show status命令了解各种SQL语句的执行频率 mysql> show status; #show status:显 ...
- mysql函数做条件_MySQL语句优化(三):避免条件字段做函数操作
今天跟各位分享一个生产环境慢查询的例子,是一个比较典型的"条件字段使用了函数导致无法走索引"的例子. 一.定位慢查询 首先发现慢查询告警,通过运维平台看到慢查询主要是下面这条:SE ...
- Mysql过长的Sql语句优化:在循环中调用存储过程运行动态语句
在批量查询的时候,有时为了提高检索效率,会使用Unique配合IN查询.此时注意IN中不要写子查询,否则时间复杂度会大大增加.不过对于已经确定的检索范围,如果有Unique索引,效率还是可以的. 但有 ...
- sql查询索引语句_sql优化总结--基于sql语句优化和索引优化
概述 最近做查询,统计和汇总.由于数据量比较庞大,大部分表数据上百万,甚至有的表数据上千万.所以在系统中做sql优化比较多,特此写一篇文章总结一下关于sql优化方面的经验. 导致查询缓慢的原因 1.数 ...
- mysql中关于group的语句指令_mysql不支持group by的解决方法小结
下载安装的是最新版的mysql5.7.x版本,默认是开启了 only_full_group_by 模式的,但开启这个模式后,原先的 group by 语句就报错,然后又把它移除了. 一旦开启 only ...
最新文章
- 官方数据:5次SDN大会的背后
- 「操作系统」《自己动手写操作系统》1.1前期准备工作
- Django使用心得(四)
- 【中文】Joomla1.7扩展介绍之JoomSEF Free (搜索引擎友好)
- 使用 PHPMAILER 发送邮件实例
- markdown mysql高亮_修改博客园markdown编辑器代码高亮风格的方法
- Linux中作业控制命令
- Bluetooth Obex
- k8s安装nginx部署前端页面_怎么在k8s中部署nginx?
- iPad Air/Air2/iPhone6 Plus跑分对比
- C语言丨线性表(一):顺序表
- python如何遍历二维数组的列元素_for循环获取二维数组的元素时的bug
- 【灵感一剖】WPS简历助手使用反馈
- 【TCP/IP】IP地址分类和特殊IP地址
- 崩坏星穹铁道PC、安卓、iOS三端配置要求
- 计算机给文件重命名快捷键,批量重命名文件 一个F2快捷键即可全部搞定
- 谁动了我的奶酪:奶酪墙上的话 ----- 总结精典篇
- 苹果鼠标怎么充电_“智能”还是“多功能”?米物智能鼠标垫测评
- iOS Xib Storyboard
- Python二手房价格预测(三)——二手房价格预测模型baseline