您的位置:首页 > 数据库 > MySQL

MySQL关于分页较多的情况的优化limit xxxx,xx

2017-03-20 09:24 459 查看
IT圈的那些事儿 2017-03-20 08:05

我们会经常遇到数据量比较大,然后分页的时候用limit xxxx,xx ,如果offset比较大的话,会发现查询巨慢无比。下面就开始讨论如果offset较大的时候该怎么优化。

首先看测试表为用户的日志表。里面的数据一共是1047946条。



然后我们用

select value1,value2 from logs order by ctime limit 9750,20;

进行查询,会发现时间很慢。



然后进行explain分析,进行了文件排序。下面开始优化。



优化方法一:调整sort_buffer_size为64M。原来的配置是10M,然后重启mysql。



然后在进行查询,会发现时间快了很多。



优化方法二:还有一种方法是对sql语句进行优化。把优化语句修改成下面这种

select value1,value2 from logs inner join (select id from logs order by ctime limit 9750,20) as a using(id);

然后开始进行查询。会发现速度比上一种方法还快。这种叫延迟关联,大家可以自行了解,原理就不赘述。



如果大家遇到以上问题,可以试着我这个思路优化一下看一看。当然了还可以一开始避免这种情况的出现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: