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 相关文章推荐
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
Sep 30 PHP
php $_SERVER["REQUEST_URI"]获取值的通用解决方法
Jun 21 PHP
PHP中运用jQuery的Ajax跨域调用实现代码
Feb 21 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
Jul 08 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
PHP获取某个月最大天数(最后一天)的方法
Jul 29 PHP
最准确的php截取字符串长度函数
Oct 29 PHP
php实现登录tplink WR882N获取IP和重启的方法
Jul 20 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 PHP
PHP赋值的内部是如何跑的详解
Jan 13 PHP
PHP7匿名类的用法示例
Apr 05 PHP
Laravel 在views中加载公共页面的实现代码
Oct 22 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
牡丹941资料
2021/03/01 无线电
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
PHP 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
如何在PHP程序中防止盗链
2008/04/09 PHP
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
php运行出现Call to undefined function curl_init()的解决方法
2010/11/02 PHP
PHP开发规范手册之PHP代码规范详解
2011/01/13 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
2019/10/10 PHP
Git命令之分支详解
2021/03/02 PHP
jquery.validate使用攻略 第三部
2010/07/01 Javascript
jQuery 获取浏览器所在的IP地址的小例子
2013/11/08 Javascript
JavaScript window.location对象
2014/11/14 Javascript
JS实现可关闭的对联广告效果代码
2015/09/14 Javascript
ES6的新特性概览
2016/03/10 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
2018/02/22 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
Python简单生成8位随机密码的方法
2017/05/24 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
python matplotlib如何给图中的点加标签
2019/11/14 Python
python安装dlib库报错问题及解决方法
2020/03/16 Python
python中for in的用法详解
2020/04/17 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
html5教程画矩形代码分享
2013/12/04 HTML / CSS
巴西电子产品购物网站:Saldão da Informática
2018/01/09 全球购物
软件工程师岗位职责
2013/11/16 职场文书
运动会广播稿200米
2014/01/27 职场文书
中秋节礼品促销方案
2014/02/02 职场文书
行政专员的岗位职责
2014/03/10 职场文书
社区消防工作实施方案
2014/03/21 职场文书
体育教师求职信
2014/06/30 职场文书
大学毕业谢师宴致辞
2015/07/27 职场文书