MySql 的group by having 优化案例
来源:互联网 发布:比特币交易平台 知乎 编辑:程序博客网 时间:2024/04/25 18:15
Background:
1.pay_award_log为一张审核表,表有重复的记录,数据约51W条
2.award_time字段有btree索引,operator字段没有索引,根据operator和award_time查询频率是一样的
3.operator为后台审核人,uid是用户字段,用户在一天内可能有多条记录,求175587这个后台人员一天内审核的用户数,需要根据uid排除重复的记录
select count(*) no from
(select * from pay_award_log group by uid having award_time between UNIX_TIMESTAMP(‘2017-12-07 0:0:0’) and UNIX_TIMESTAMP(‘2017-12-07 23:59:59’) and operator = 175587 ) as award_count
这样子的查询需要耗时0.6-0.8秒,处女座程序员是绝对接收不了这样的龟速的,况且一个页面还有多条这样的sql要查询,一个页面有9条这样的查询,打开这个统计的页面要7-8秒真的是超级慢!
分析SQL:
1.这里查询慢group by是一个很关键的因素,考虑干掉他,用程序去去重
2.多条这样的sql就是where operator = 175587、operator = xxxxx这样的,直接去掉operator, 保留一个索引的where条件,用程序去过滤条件
3.再把统计为昨天的数据增加上缓存,今天的数据也增加上缓存,当天的数据缓存时间设置短点5-30分钟这样
整个优化方案下来页面访问速度提升到0.3S,比之前的访问速度提升了25倍,有缓存的情况下直接秒读
- MySql 的group by having 优化案例
- mysql group by和having的应用
- Mysql group by以及having的用法
- mysql count group by having
- Mysql group by原理 having
- Mysql中order by、group by、having的区别
- mysql的group by、order by和having、where比较
- MySQL Group By的优化
- Mysql 简单的命令语句续-*,as,group by,order by,group by,having,limit;
- group by having的使用
- Mysql中group by having 用法需要注意的事项
- 项目中遇到的mysql group by having
- mysql 的DISTINCT、EXISTS、IN、GROUP BY..HAVING 用法记录
- mysql group by having用法+having where之间的区别+group by按日期分组统计的查询
- mysql group by having用法+having where之间的区别+group by按日期分组统计的查询
- order by、group by、having的区别
- group by,having,order by的用法
- group by , order by , having 的用法
- RecyclerView
- 用js快速动态生成bootstrap table表格数据
- 蓝牙5:速度更快,范围更广,新的RF测试---电子技术资料
- .
- 2017ACM/ICPC亚洲区沈阳站【solved:6 / 13】
- MySql 的group by having 优化案例
- poi 读取写入excel
- UE4入门-常见的对象-概述
- DUBBO集群容错与负载均衡
- C++连接mysql数据库简单小例子(使用ODBC)
- 2017-12-08 python笔记2
- Ubuntu第一次登录给root用户设置密码
- SpringBoot开发微信公众号(一)
- python第三次