SQL优化之《预警事件统计》
在做一件什么事情:
在首页大屏上,可以通过各种维度展示事件统计信息。
sql如下:
点击查看代码
SELECT
count( * ) count,
camera_code groupName
FROM
alarm_event
WHERE
alarm_event.illegal_tag ="24"
AND alarm_event.organization_code ="310000110000"
AND alarm_event.event_time >="2020-02-24 00:00:00"
AND alarm_event.is_del = 0
GROUP BY
camera_code
ORDER BY
count( * ) DESC
遇到了什么问题:
明明数据量不大,但是sql的响应时间就很长。
问题分析:
1.整体执行时间,20多秒,就这一个简单的查询,就20多秒。
2.然后explain一下:
发现查找的时候只用到了组织code
Using index condition; Using where; Using temporary; Using filesort 用到了文件排序,临时表,where条件过滤 ,二次查询。
3.先去掉文件排序再试试看
Using where; Using temporary
Using index condition; Using where; Using temporary; Using filesort
我的方案:
对预警事件,原本是有两个字段增加了索引,分别是event_date和event_time。但是对于create_time这种通用的字段并没有增加索引。
应对方案,对illegal_tag 增加独立索引,对crate_time增加索引。
最终的结果:
走索引后,响应时间毫秒级。
本文来自博客园,作者:Eular,转载请注明原文链接:https://www.cnblogs.com/euler-blog/p/18608900
分类:
技术 / 场景&解决方案
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通