php MySQL与分页效率


Posted in PHP onJune 04, 2008

 
最基本的分页方式:
SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT ...
在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就是确保使用了索引:
举例来说,如果实际SQL类似下面语句,那么在category_id, id两列上建立复合索引比较好:
SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 50, 10

子查询的分页方式:

随着数据量的增加,页数会越来越多,查看后几页的SQL就可能类似:

SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 10

一言以蔽之,就是越往后分页,LIMIT语句的偏移量就会越大,速度也会明显变慢。

此时,我们可以通过子查询的方式来提高分页效率,大致如下:

SELECT * FROM articles WHERE category_id = 123 AND id >= (
    SELECT id FROM articles ORDER BY id LIMIT 10000, 1
) LIMIT 10

----------------------------------------

实际可以利用类似策略模式的方式去处理分页,比如判断如果是一百页以内,就使用最基本的分页方式,大于一百页,则使用子查询的分页方式。

PHP 相关文章推荐
php 阴历-农历-转换类代码
Jan 16 PHP
PHP json_decode函数详细解析
Feb 17 PHP
php+html5使用FormData对象提交表单及上传图片的方法
Feb 11 PHP
Symfony2实现在doctrine中内置数据的方法
Feb 05 PHP
CI框架实现cookie登陆的方法详解
May 18 PHP
php使用变量动态创建类的对象用法示例
Feb 06 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
Mar 15 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
Mar 24 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
Apr 04 PHP
php中青蛙跳台阶的问题解决方法
Oct 14 PHP
PHP中通过getopt解析GNU C风格命令行选项
Nov 18 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
Jul 10 PHP
php mysql数据库操作分页类
Jun 04 #PHP
php mysql数据库操作类
Jun 04 #PHP
CodeIgniter php mvc框架 中国网站
May 26 #PHP
五个PHP程序员工具
May 26 #PHP
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
May 26 #PHP
JS实现php的伪分页
May 25 #PHP
php中iconv函数使用方法
May 24 #PHP
You might like
php daodb插入、更新与删除数据
2009/03/19 PHP
PHP下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
2011/06/09 PHP
header中Content-Disposition的作用与使用方法
2012/06/13 PHP
curl实现站外采集的方法和技巧
2014/01/31 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
PHP实现的微信公众号扫码模拟登录功能示例
2019/05/30 PHP
根据地区不同显示时间的javascript代码
2007/08/13 Javascript
js 浮动层菜单收藏
2009/01/16 Javascript
JQuery 插件模板 制作jquery插件的朋友可以参考下
2010/03/17 Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
2014/01/26 Javascript
鼠标滑过出现预览的大图提示效果
2014/02/26 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
修改jquery中dialog的title属性方法(推荐)
2016/08/26 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
vue使用技巧及vue项目中遇到的问题
2018/06/04 Javascript
python错误处理详解
2014/09/28 Python
python内存管理分析
2015/04/08 Python
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
Python函数参数操作详解
2018/08/03 Python
Python实现将Excel转换成为image的方法
2018/10/23 Python
django如何自己创建一个中间件
2019/07/24 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
美国在线轮胎零售商:SimpleTire
2019/04/08 全球购物
工作疏忽检讨书
2014/01/25 职场文书
人力管理专业毕业生求职信
2014/02/27 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
幼儿园见习报告范文
2014/10/30 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
盗窃案辩护词
2015/05/21 职场文书
商场广播稿范文
2015/08/19 职场文书