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
浙公网安备 33010602011771号