第一种:分页查询(框架自带的分页查询)
1)这种框架自带的分页方法,有时候数据量一多就会比较慢,所以一定要自己些查询sql语句。 我在项目中就遇到一个这样的问题,两个表关联分页查询,因为我使用的是inner join进行的关联,导致仅有43万的数据,查询了5秒多,后改为left join,用时1.2秒!
第二种:添加索引
根据查看执行计划,对查询条件添加对应的索引!
第三种: 使用limit
如果你知道查出来的数据的条数,就可以使用limit numb; 我在项目中遇到了一个问题,两个表关联查询,因为数据量很大,所以查询速度很慢,但是我知道只会查出一条数据,我就使用了 select * from table where code = xxxx limit 1; 速度仅用了不到1秒;
第四种: 分页查询(自己获取limit的起始位置)
框架的分页查询,必然会有count查询,因为他要计算总页数,但是这样有时候会导致查询比较慢。我们可以和前端约定好,不展示页码,只保留上一页和下一页。这样我们就可以通过计算页码的起始位置和结束位置来自己分页查询了。
举例:
// 获取起始位置
publicstaticIntegergetStartIndex(Integer pageNo,Integer pageSize){
return(pageNo -1) * pageSize;
}
sql: select * from table limit startIndex, pageSize;
所以,我们在解决问题时候,要根据不同的业务场景,使用不同的办法解决。如果使用了分页还是慢的话,就要查看自己的MySQL语句是否有问题!通过查看执行计划进行分析。
网页名称:常见的4种方法解决MySQL查询慢
分享网址:http://lswzjz.com/article/isgcpe.html