高效的mysql分页方法及原理
|
首先看一下分页的基本原理:
文中提到一种”clue”的做法,给翻页提供一些”线索”,比如还是SELECT * FROM message ORDER BY id DESC,按id降序分页,每页20条,当前是第10页,当前页条目id最大的是9527,最小的是9500,如果我们只提供”上一页”、”下一页”这样的跳转(不提供到第N页的跳转),那么在处理”上一页”的时候SQL语句可以是: 处理”下一页”的时候SQL语句可以是: 缺点是只能提供”上一页”、”下一页”的链接形式,但是我们的产品经理非常喜欢”<上一页 1 2 3 4 5 6 7 8 9 下一页>”这样的链接方式,怎么办呢? 如果LIMIT m,n不可避免的话,要优化效率,只有尽可能的让m小一下,我们扩展前面的”clue”做法,还是SELECT * FROM message ORDER BY id DESC,按id降序分页,每页20条,当前是第10页,当前页条目id最大的是9527,最小的是9500,比如要跳到第8页,我看的SQL语句可以这样写: 复制代码 代码如下: 注意SQL语句里面的ASC和DESC,如果是ASC取出来的结果,显示的时候记得倒置一下。 已在60W数据总量的表中测试,效果非常明显。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 使用mysqldump导入数据和mysqldump增量备份(mysqldump使用方
- SQLSERVER 中datetime 和 smalldatetime类型分析说明
- sql-server – 如何将Null日期变量传递给SQL Server数据库
- 使用mysql中遇到的几个问题
- sqlserver 错误602,未能在sysindexes中找到数据库 的解决办
- 详解MySQL误操作后怎样进行数据恢复
- sql-server – 如何为用户禁用SQL Server Management Studi
- 允许SQL相同的列名
- sql – Insert语句要求我插入autoincrement列
- sql-server – 使用HAProxy为镜像SQL Server提供容错功能
