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的响应时间就很长。

问题分析:

image
1.整体执行时间,20多秒,就这一个简单的查询,就20多秒。

2.然后explain一下:
image
发现查找的时候只用到了组织code
Using index condition; Using where; Using temporary; Using filesort 用到了文件排序,临时表,where条件过滤 ,二次查询。
3.先去掉文件排序再试试看
image
Using where; Using temporary
Using index condition; Using where; Using temporary; Using filesort

我的方案:

对预警事件,原本是有两个字段增加了索引,分别是event_date和event_time。但是对于create_time这种通用的字段并没有增加索引。
应对方案,对illegal_tag 增加独立索引,对crate_time增加索引。

最终的结果:

走索引后,响应时间毫秒级。

posted @   Eular  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示