【MySQL】-性能调优

mysql这块我们是用的druid监控,在监控页面上可以看到查询次数和查询时间
【MySQL】-性能调优

1.查询次数太多的就放到缓存里,我们曾经遇到过一条特别不起眼的SQL查询特别慢,后来发现他的调用特别频繁,因为好几个服务都在频繁调用这个SQL,我们就把这条SQL查询出来的数据保存缓存里

2.如果是查询时间太长的,我们会用explain进行分析,查看索引是不是有失效,没有命中的情况。索引优化请看此篇文章。
我们遇到过模糊查询的时候特别慢,我们有个功能输入学生的名字在全校范围内查询然后把他的学院班级年级都插入来,这个查询是可以模糊匹配的,但是查的时候很慢,加了索引之后也慢,后来发现是因为like左边也加%,而且用的是select * ,然后就修改了一下,select 索引name+学院id,索引就可以用了

3.如果索引也没有问题的话,可以从其他方面再考虑一下SQL。
①比如说,我们之前有个业务是根据学生的学号去查学生的宿舍,我们能确定一个学生是只能住一个宿舍的,所以查询的时候要加上 limit 1,MySQL在查询到一条数据之后,会立即停止搜索,这会带来性能上的提升
②还有查询“男”“女”这种,这种数据是不需要加索引的,加上效果也不大,所以就把字段类型设置成enum类型,enum保存的是tinyint类型,因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。
③查看select * 的情况,根据业务是不是需要把所有数据都查出来,如果不是,需要哪个字段查哪个字段