虽然开发这么多年,但是在数据库的优化上,我一直算是个小白,这次mysql的优化过程记录一下,对于别人来说可能很简单,对于我来说,也是一次学习过程。
数据库使用的是mysql,目前数据也比较多,有上亿条的数据了,用户一直反映查询比较慢,之前一直没时间,这次花了几天时间来定位和优化。一开始就盲目的增加索引,删除索引,发现作用不大,开始查资料,学习explain分析,并了解其中的原理。
第一个优化,应该是sql语句,语句本身并不复杂,主要就是分页条件查询,条件有两个,staId和time,一开始是直接查询,太慢,百度资料后,修改为先查询满足条件的主键id,再根据主键id查询数据,快了不少。
第二个优化,优化索引。第一步优化后,当查询的数据量很大时,仍然很慢,继续百度。看到一遍文章,发现索引是讲究顺序的,比如我的索引之前是index(time, staId),但是我的查询语句是“WHERE station_id=12 AND TIME >= 1632381001 AND TIME <= 1640157001”,于是将索引修改为index(staId, time),这一下,查询无比丝滑,从30s+下降到不到1s,成就感爆棚。