php - 一条SQL执行多次 sum 特别慢

小皮2017-04-10 15:55:28 0 5 173

SELECT agentid,count(id) AS allnum,

sum(if(review_flag = 'p'AND delflag IN ('N' , 'P'),1,0)) AS approved_1,

sum(if(review_flag = 'E', 1, 0)) AS approved_2,

sum(if(review_mode = '3' AND review_flag = 'Y',1,0)) AS approved_3,

sum(if(review_mode = '2' AND review_flag = 'Y',1,0)) AS approved_4,

sum(if(review_mode = '1' AND review_flag = 'Y',1,0)) AS approved_5,

sum(if(review_flag = 'N' AND resubmit = 'Y',1,0)) AS approved_6,

sum(if(review_flag = 'N' AND resubmit = 'N',1,0)) AS approved_7

FROM talbe WHERE agentid IN ('A' , 'B', 'C') AND delflag IN ('N' , 'P', 'H')

GROUP BY agentid

该语句执行的时候 需要20多S才完成。

回答

5

0

分享

全部回复 (5)

伊谢尔伦2017-04-10 15:57:285楼

调整表结构. 似乎你把很复杂的逻辑放在 数据表结构里了.

多次sum不是问题. 主要在于这个group by上, 一般的, mysql 全表扫一边, 创建临时表, 排序分组. 这个是很慢的. 你可以试一下 建立 (agentid, delflag, review_flag, review_mode, resubmit, id) 的联合索引.

回复

巴扎黑2017-04-10 15:57:284楼

索引,从新设计你自己标的结构。。。怎么会sum这么多次。。。

回复

大家讲道理2017-04-10 15:57:283楼

这不是sum的问题啊,这条语句本来就复杂。

回复

PHPzhong2017-04-10 15:57:282楼

这种情况我想应该是索引建立的不够科学吧,你可以借助EXPLAIN来具体查看什么地方会卡住,是否用到索引。

同时,给你一个建议,你应该把表结构贴出来,这样路过的大神就能具体帮你分析分析了。

回复

ringa_lee2017-04-10 15:57:281楼

先分组 sum,把结果取到你的程序里去继续加工

回复

php频繁执行sql,php - 一条SQL执行多次 sum 特别慢相关推荐

  1. 执行计划 分析一条sql语句的效率 mysql_MySQL中一条SQL语句的执行过程

    MySQL中一条SQL语句的执行过程 发布时间:2018-11-24 18:35, 浏览次数:390 , 标签: MySQL SQL 查询语句的执行顺序: 1.客户端通过TCP连接发送连接请求到mys ...

  2. 执行计划 分析一条sql语句的效率 mysql_mysql的SQL语句执行计划分析:EXPLAIN

    数据库最常见的操作就是查询了,我们经常要用"SELECT"语法对已有的表进行某种检索,但是在实际应用中,查询前我们并不知道该查询会如何运行.会使用多少时间.会涉及多少字段和记录,每 ...

  3. MySQL执行过程(一条SQL从Java到数据库都经历了什么)

    视频地址 https://www.bilibili.com/video/bv1Sq4y1377k 从我们学习Java开始,我们就学了很多种操作数据库的方式,最开始的JDBC.后面的JPA.HIbern ...

  4. Jmeter JDBC Request执行多条SQL语句

    之前写过Jmeter操作mysql的文章https://blog.csdn.net/qq_36502272/article/details/88891873今天我们再看下如何操作多条sql语句 1.添 ...

  5. 基础架构:一条sql语句是如何执行的?

    一条sql语句是如何执行的? 一条sql语句是如何执行的? 接下来我打算更新一本mysql基础架构专栏,此文章来自与林晓斌老师的极客时间收费栏目,现免费分享给大家 这是专栏的第一篇文章,我想来跟你聊聊 ...

  6. sql 非主键每年自增_或许你不知道的 10 条 SQL 技巧

    上文我们简述了 SQL 的一些进阶技巧,一些朋友觉得不过瘾,我们继续来下篇,再送你 10 个技巧 一. 使用延迟查询优化 limit [offset], [rows] 经常出现类似以下的 SQL 语句 ...

  7. mysql 拼接sql批量执行_Mysql 学习笔记之 SQL 执行过程

    写在开始 本系列源自极客时间 MySQL 专栏,整理而成 在执行下面这个查询语句时的执行的流程是怎么样的? mysql 看过相关资料的同学都可能知道执行流程大概是这样的: 其执行过程为:连接.查询缓存 ...

  8. 漫谈一条SQL语句的一生

    小伙伴想精准查找自己想看的MySQL文章?喏 → MySQL专栏目录 | 点击这里 一个默默无闻的垂钓者 --- 来自城管副队长小王 前言 其实,在我们程序员看来,写SQL就像吃饭一样稀松平常.从前, ...

  9. mysql多条新增字段sql合并为一条新增

    如下,同一张表,有4条分开的新增字段的sql, alter table aadd column column1 tinyint null default null comment 'column1:0 ...

最新文章

  1. wxWidgets编译安装gtk问题的解决办法
  2. golang mysql 事务_golang的嵌套事务管理-Go语言中文社区
  3. 梯度下降法(一)入门
  4. [tyvj1935 Poetize3]导弹防御塔 (二分图多重匹配)
  5. 28.Node.js 函数和匿名函数
  6. 使用 Benchmark.NET 测试代码性能
  7. 数据不平衡处理_如何处理多类不平衡数据说不可以
  8. JDBC连接 Mysql数据库
  9. python内置输入函数_python内置函数 print()
  10. 内核同步机制-读写信号量(rw_semaphore)
  11. android color列表,Android应用资源---状态颜色列表(Color State List)
  12. python爬取内容_Python爬取小说内容
  13. windows 10下让jar文件双击可以运行的解决方法
  14. i511260h参数 i5 11260h评测
  15. matConvNet学习-使用GPU
  16. NEC加入美国国土安全局AIS网络威胁信息官民共享体系
  17. Unity小技巧——Inspector中插入数组元素
  18. 手把手叫你制作一个精美的在线音乐播放器
  19. Latex: 减少图与文字之间的空白间隙
  20. 如何4小时做出一个《新型冠状病毒同程查询》 #1

热门文章

  1. 数据科学家们会被 AutoML 代替吗?
  2. 告别后端!阿里云小程序 Serverless 教你如何 30 分钟开发小程序!
  3. @程序员,欠下的技术债怎么还?
  4. 如何停止在技术债上浪费时间?
  5. 阿里合伙人名单曝光;百度网盘回应“不买会员限速”;库克:不担心苹果在华表现 | 极客头条...
  6. 33 关 Python 游戏,测试你的爬虫能力到底及格不?
  7. 刘强东深夜写信诉苦;华为不排斥卖给苹果 5G 芯片;Facebook 再宕机 | 极客头条...
  8. 如何设计一个实用的线程池?
  9. AMD 芯片被曝大量安全漏洞,Linux 之父怒评!
  10. html垂直线6,HTML的垂直线