mysql如何执行才有更好的分页效果
来源:互联网 发布:抢票用哪个软件好 编辑:程序博客网 时间:2024/04/27 16:49
文章转自:http://www.dev26.com/bbs/topic/389
最近一直在考虑网站改造的问题,因为我实在受不了来回的折腾hibernate、JPA这些东西了,有学这些的时间我还不如用这时间研究一下SQL,当然也是我个人比较懒,现在就把我收集的关于mysql高交往分页的一些知识点列出来。
先看一下分页的基本原理(我拿的是CSDN那个百万级数据库来测试!):
1
SELECT
*
FROM
`csdn`
ORDER
BY
id
DESC
LIMIT 100000,2000;
耗时: 0.813ms
分析:对上面的mysql语句说明:limit 100000,2000的意思扫描满足条件的102000行,扔掉前面的100000行,返回最后的2000行。
问题就在这里,如果是limit 100000,20000,需要扫描120000行,在一个高并发的应用里,每次查询需要扫描超过100000行,性能肯定大打折扣。
在《efficient pagination using mysql》中提出的clue方式。
利用clue方法,给翻页提供一些线索,比如还是SELECT * FROM `csdn` order by id desc,按id降序分页,每页2000条,当前是第50页,当前页条目id最大的是102000,最小的是100000。如果我们只提供上一页、下一页这样的跳转(不提供到第N页的跳转)。
那么在处理上一页的时候SQL语句可以是:
1
SELECT
*
FROM
`csdn`
WHERE
id<=102000
ORDER
BY
id
DESC
LIMIT 2000; #上一页
耗时:0.015ms
处理下一页的时候SQL语句可以是:
1
SELECT
*
FROM
`csdn`
WHERE
id>102000
ORDER
BY
id
ASC
LIMIT 2000; #下一页
耗时:0.015ms
这样,不管翻多少页,每次查询只扫描20行。效率大大提高了!
但是,这样分页的缺点是只能提供上一页、下一页的链接形式。
- mysql如何执行才有更好的分页效果
- 有明确的方向才有更好的未来
- 如何推广自己的网站效果更好
- 关于mysql中触发器old和new如何更好的区别我有话要说?
- dede 如何调用其他栏目的文章或者缩略图列表且有分页效果?
- 总有更好的
- 总有更好的
- 总有更好的
- 总有更好的
- 总有更好的
- 总有更好的
- 总有更好的
- 总有更好的
- 总有更好的
- 总有更好的
- 总有更好的
- 总有更好的
- 总有更好的
- 面试题
- ibatis源码浅析- 事务
- PHP变量常量数据类型简单罗列
- 网络密码传输安全性分析及解决方案
- Web Services 中XML、SOAP和WSDL的一些必要知识
- mysql如何执行才有更好的分页效果
- phpunit thinkphp model
- JQuery评级插件之JRating
- swf文件结构解析
- Linux添加FTP用户并设置权限
- 分享一个ActionScript3的倒影类
- 六月
- 巴途_数据库存储引擎学习之《mysql,innoDB,MyISAM等相关数据库存储引擎分析》
- libjingle源码解析(3)-【PseudoTcp】建立UDP之上的TCP(1):连接和关闭