开发者社区> 问答> 正文

mysql在使用group by之后产生using temporary,导致性能较慢

问题描述:在一个单表的分组查询中,group by字段使用了临时表导致性能较慢

SELECT 
	      id,http_url,count(1) as callCount,sum(IF((`status`='200'),1,0)) as successNum,
	      sum(IF((`status`!='200'),1,0)) as failNum, avg(responseTime) as avgResponseTime
	   FROM http_log_info
	   WHERE system_cd = 'CCRC'
	   AND begin_time BETWEEN '2020-03-16' AND '2020-04-17'
     and delete_flag = 0
       group by http_url

表结构如下: 表结构.png 索引: 索引.png explain分析结果,group by 之后使用临时表,看Extra中Using temporary sql分析.png 优化方案各位多指导

展开
收起
叮咚521 2020-04-20 19:24:58 6090 0
1 条回答
写回答
取消 提交回答
  • 默认情况下,MySQL对所有GROUP BY col1,col2…的字段进行排序。

    如果查询包括GROUP BY,想要避免排序结果的消耗,则可以指定ORDER BY NULL禁止排序。

    修改为:

    11.png

    2020-04-22 10:27:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像