一、首先看Group By创建临时表的情况,因为有临时表的存在所以索引失效。

  1. 如果GROUP BY 的列没有索引,产生临时表
  2. 如果GROUP BY时,SELECT的列不止GROUP BY列一个,并且GROUP BY的列不是主键 ,产生临时表
  3. 如果GROUP BY的列有索引,ORDER BY的列没索引.产生临时表
  4. 如果GROUP BY的列和ORDER BY的列不一样,即使都有索引也会产生临时表
  5. 如果GROUP BY或ORDER BY的列不是来自JOIN语句第一个表.会产生临时表
  6. 如果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语句优化相关推荐

  1. Mysql删除语句优化_MySQL性能优化之常用SQL语句优化

    SQL性能优化的目标:至少要达到range级别,要求是ref级别,consts最高.[阿里巴巴JAVA开发手册] 说明: 1).consts单表中最多只有一个匹配行(主键/唯一索引),在优化阶段即可读 ...

  2. mysql c where_mysql where条件语句优化笔记

    where优化主要适用于SELECT查询,当然DELETE和UPDATE语句中也会涉及,这个要大家在平常多积累. 删除不必要的括号: ((a AND b) AND c OR (((a AND b) A ...

  3. mysql优化的几种方法_详解mysql数据库不同类型sql语句优化方法

    概述 分享一下之前笔记记录的一些不同类型sql语句优化方法,针对mysql. 主要分成优化INSERT语句.优化ORDER BY语句.优化GROUP BY 语句.优化嵌套查询.优化OR语句这几个方面, ...

  4. mysql sql优化_MySQL数据库SQL语句优化原理专题(三)

    需求 做过开发的同学,对分页肯定不会陌生,因为很多前台页面展示,为了更好的展示数据,就会用到分页,所以如何写一个高性能的分页SQL语句,是每一个开发人员需要掌握的技能. 分页SQL 这里给大家写一个分 ...

  5. MySQL优化之三:SQL语句优化

    一 SQL语句优化的一般步骤: 1 通过show status命令了解各种SQL语句的执行频率 mysql> show status;                #show status:显 ...

  6. mysql函数做条件_MySQL语句优化(三):避免条件字段做函数操作

    今天跟各位分享一个生产环境慢查询的例子,是一个比较典型的"条件字段使用了函数导致无法走索引"的例子. 一.定位慢查询 首先发现慢查询告警,通过运维平台看到慢查询主要是下面这条:SE ...

  7. Mysql过长的Sql语句优化:在循环中调用存储过程运行动态语句

    在批量查询的时候,有时为了提高检索效率,会使用Unique配合IN查询.此时注意IN中不要写子查询,否则时间复杂度会大大增加.不过对于已经确定的检索范围,如果有Unique索引,效率还是可以的. 但有 ...

  8. sql查询索引语句_sql优化总结--基于sql语句优化和索引优化

    概述 最近做查询,统计和汇总.由于数据量比较庞大,大部分表数据上百万,甚至有的表数据上千万.所以在系统中做sql优化比较多,特此写一篇文章总结一下关于sql优化方面的经验. 导致查询缓慢的原因 1.数 ...

  9. mysql中关于group的语句指令_mysql不支持group by的解决方法小结

    下载安装的是最新版的mysql5.7.x版本,默认是开启了 only_full_group_by 模式的,但开启这个模式后,原先的 group by 语句就报错,然后又把它移除了. 一旦开启 only ...

最新文章

  1. 官方数据:5次SDN大会的背后
  2. 「操作系统」《自己动手写操作系统》1.1前期准备工作
  3. Django使用心得(四)
  4. 【中文】Joomla1.7扩展介绍之JoomSEF Free (搜索引擎友好)
  5. 使用 PHPMAILER 发送邮件实例
  6. markdown mysql高亮_修改博客园markdown编辑器代码高亮风格的方法
  7. Linux中作业控制命令
  8. Bluetooth Obex
  9. k8s安装nginx部署前端页面_怎么在k8s中部署nginx?
  10. iPad Air/Air2/iPhone6 Plus跑分对比
  11. C语言丨线性表(一):顺序表
  12. python如何遍历二维数组的列元素_for循环获取二维数组的元素时的bug
  13. 【灵感一剖】WPS简历助手使用反馈
  14. 【TCP/IP】IP地址分类和特殊IP地址
  15. 崩坏星穹铁道PC、安卓、iOS三端配置要求
  16. 计算机给文件重命名快捷键,批量重命名文件 一个F2快捷键即可全部搞定
  17. 谁动了我的奶酪:奶酪墙上的话 ----- 总结精典篇
  18. 苹果鼠标怎么充电_“智能”还是“多功能”?米物智能鼠标垫测评
  19. iOS Xib Storyboard
  20. Python二手房价格预测(三)——二手房价格预测模型baseline

热门文章

  1. ESP32刷入MicroPython固件
  2. Bambook阅读Pdf的设置
  3. WiFi万能钥匙App可一键登录全国215个城市的“爱WiFi”
  4. 012 数据恢复(DiskGenius软件介绍)
  5. Qtum量子链应邀出席第24届全美华人金融协会年会
  6. Materials Studio中移动原子
  7. 想成为六西格玛黑带大师?这些你了解吗
  8. .NET程序集版本搜索分析
  9. android系统应用程序设置时间,Android应用程序设置系统时间的方法
  10. python中的None与False