当发生这个问题时候,博主先按顺序寻找问题。使用排除法,一点一点排除。
1、第一件事情寻找sql慢的原因,是否是因为没有建立索引或者是修改索引。导致索引失效。
2、使用explain进行分析sql 查询当前sql索引使用程度,是否需要建立索引。
3、检查sql是否多表联查时,是否是小表驱动大表。
4、慎用group by + order by 操作,可能会使索引失效(深坑)。
5、检查服务器环境连接地址是否是内网IP,不是公网IP(阿里云MYSQL,比较坑)。
6、检查mysql内存分配。
7、检查mysql使用搜索引擎,mysql索引建立是使用的什么索引。
解决问题
与上面一一对应:
1、在建表时,分析业务数据量是否很大,需要在where 字段上建立索引。
2、使用explain分析时,查看当前索引是否被使用到type (system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL)
3、检查sql
4、之前因为group by + order by 导致索引失效,使用FORCE INDEX(XXX) 强制索引,进行查询
5、检查yml文件,查看mysql连接是否是公网地址
6、使用show variables like 'innodb_buffer_pool%';进行查询内存,如果不够使用,进行修改
7、使用不当进行修改。