mysql的limit给分页带来了很大方便,但数据量一大时,limit的性能就急剧下降。
例如,取10条数据:
这二个sql语句在执行性能上,绝不是一个数量级别的。
关于mysql limit的优化,这里贴出一段文字:
对limit的优化,不是直接使用limit,而是首先获取到offset的id,然后直接使用limit size来获取数据。
根据它的数据,明显要好于直接使用limit。
这里我们使用数据分两种情况进行测试。(测试环境win2033+p4双核 (3GHZ) +4G内存 Mysql 5.0.19)
1、offset比较小时。
结论:
偏移offset较小时,直接使用limit较优。
这个很显然是子查询的原因。
2、offset大时。
多次运行,时间保持在0.0061左右,只有前者的1/3。
可以预计offset越大,后者越优。
以后再写limit语句时要注意了,好好优化下Mysql。
据表 collect ( id, title ,info ,vtype) 就这4个字段,其中 title 用定长,info 用text, id
是逐渐,vtype是tinyint,vtype是索引。
这是一个基本的新闻系统的简单模型。
现在往里面填充数据,填充10万篇新闻。
最后collect 为 10万条记录,数据库教程表占用硬盘1.6G。OK ,看下面这条sql语句:
select id,title from collect limit 1000,10; 很快;基本上0.01秒就OK。
再来看这条语句:
select id,title from collect limit 90000,10;
从9万条开始分页,结果8-9秒完成,性能严重的差啊。
可以这样优化:
select id from collect order by id limit 90000,10; 很快,0.04秒就OK。
使用id主键做索引,速度没得说。
改进后的方法:
这条语句依然是用了id做索引的结果。
您可能感兴趣的文章:
mysql limit用法及优化详解
学习MySQL数据分页查询(limit用法)
mysql查询优化之limit和count的优化
mysql优化之LIMIT,OFFSET分页
优化mysql的limit offset的例子
学习mysql中的limit分页优化
mysql的limit offset,n的奥秘
相关阅读:
MySQL海量数据的通用存储过程分页代码
学习MySQL数据分页查询(limit用法)
mysql优化之LIMIT,OFFSET分页
学习mysql中的limit分页优化
mysql分页limit速度太慢