
0关注
552
文章
0
收藏
2
次赞
139682
查看
Ta的博客 更多
SpringBoot 五种获取ApplicationContext的方式java中进行日期时间比较的4种方法SpringBoot整合WebSocket实现前后端互推消息CSS怎么画五角星?SpringBoot中RedisUtils工具类配置及直接使用原本可以执行得很快的 SQL 语句,执行速度却比预期的慢很多,原因是什么?如何解决?
原因:从大到小可分为四种情况
MySQL 数据库本身被堵住了,比如:系统或网络资源不够。
SQL 语句被堵住了,比如:表锁,行锁等,导致存储引擎不执行对应的 SQL 语句。
确实是索引使用不当,没有走索引。
表中数据的特点导致的,走了索引,但回表次数庞大。
解决:
考虑采用 force index 强行选择一个索引
考虑修改语句,引导 MySQL 使用我们期望的索引。比如把“order by b limit 1” 改成 “order by b,a limit 1” ,语义的逻辑是相同的。
第三种方法是,在有些场景下,可以新建一个更合适的索引,来提供给优化器做选择,或删掉误用的索引。
如果确定是索引根本没必要,可以考虑删除索引。
MySQL 数据库本身被堵住了,比如:系统或网络资源不够。
SQL 语句被堵住了,比如:表锁,行锁等,导致存储引擎不执行对应的 SQL 语句。
确实是索引使用不当,没有走索引。
表中数据的特点导致的,走了索引,但回表次数庞大。
解决:
考虑采用 force index 强行选择一个索引
考虑修改语句,引导 MySQL 使用我们期望的索引。比如把“order by b limit 1” 改成 “order by b,a limit 1” ,语义的逻辑是相同的。
第三种方法是,在有些场景下,可以新建一个更合适的索引,来提供给优化器做选择,或删掉误用的索引。
如果确定是索引根本没必要,可以考虑删除索引。
0 0