最近由于项目数据开始增多,查询慢的问题也就开始出现了,但是一看表才7万多条数据,查询下居然要用12秒,就感觉很诡异,不知道是不是oracle和mysql不一样,以前用oracle的时候不加索引也要到10万+的数据才会有点慢,是有啥配置问题还妄有大佬解答下。

既然出现了查询慢的情况,自然就是优化sql。

1、先将查询列减少,不用“select *”,要用到哪些数据就取哪些数据。

2、把需要用到的数据都加上索引。

3、因为是列表是分页查询,所以可以在sql中加limit限制返回条数,也能减少查询速度;

select id,msg_id,obj_type,camera_id from t_czcg_ali_alert limit 10;

4、这样以后查询就正常了,但是需求上需要按照创建时间倒序,于是加上“order by create_time desc”后又变慢了,查了下是这个索引没有用上

EXPLAIN select id,msg_id,obj_type,camera_id from t_czcg_ali_alert order by create_time desc limit 10;

5、加上强制索引“FORCE INDEX(idx_t_czcg_ali_alert_create_time)” ,速度正常了

select id,msg_id,obj_type,camera_id from t_czcg_ali_alert FORCE INDEX(idx_t_czcg_ali_alert_create_time) order by create_time desc limit 10;