背景
项目网页打开数据很慢,于是我就去找dba查看一下是否有慢SQL。然后DBA给的反馈是MYSQL被我调挂掉了。所以访问超时,页面打不开。
发现过程
DBA 发现有一些SQL的执行时间超过1s.并且有一些并发访问。于是就将MYSQL直接给拖垮了。于是DBA将慢的SQL发给我如下。
上图我们可以很明显看到我使用了count()命令。所以比较耗时。
解决方法
首先。我的业务需求是查找出 where a = xx and b = xx 的最后一行。
于是我用了首先 count 算出来有多少行。然后再按照分页查找。分为count()这么多页。每页一个数据。查最后一页。这样就能实现我的业务需求了。但是这样做确实是SQL会有问题。于是优化了
SQL。
变成了 Select * from table where a = xx and b = xx order by id desc limit 1 ;
修改SQL。将SQL优化了。查询数据很快了。问题就解决了。