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获取类中常量,属性,及方法列表的方法
Apr 09 PHP
php正则表达匹配中文问题分析小结
Mar 25 PHP
php将文本文件转换csv输出的方法
Dec 31 PHP
php实现源代码加密的方法
Jul 11 PHP
ThinkPHP中使用Ueditor富文本编辑器
Sep 02 PHP
深入浅析php中sprintf与printf函数的用法及区别
Jan 08 PHP
PHP微信支付实例解析
Jul 22 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
Nov 07 PHP
PHP简单获取随机数的常用方法小结
Jun 07 PHP
php redis setnx分布式锁简单原理解析
Oct 23 PHP
PHP7新增函数
Mar 09 PHP
ThinkPHP5和ThinkPHP6的区别
Mar 31 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版
2012/04/20 PHP
PHP判断一个字符串是否是回文字符串的方法
2015/03/23 PHP
正确的PHP匹配UTF-8中文的正则表达式
2015/05/13 PHP
dess中一个简单的多路委托的实现
2010/07/20 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
按钮接受回车事件的三种实现方法
2014/06/06 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
非常实用的js验证框架实现源码 附原理方法
2016/06/08 Javascript
AngularJS使用ng-options指令实现下拉框
2016/08/23 Javascript
JavaScript定时器实现的原理分析
2016/12/06 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
2016/12/26 Javascript
canvas绘制表盘时钟
2017/01/23 Javascript
详解使用路由延迟加载 Angular 模块
2017/10/12 Javascript
vue使用websocket的方法实例分析
2019/06/22 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
Python常用模块用法分析
2014/09/08 Python
python绘图方法实例入门
2015/05/19 Python
在Python的Django框架中生成CSV文件的方法
2015/07/22 Python
python如何以表格形式打印输出的方法示例
2019/06/21 Python
python实现邮件自动发送
2019/08/10 Python
pytorch中的自定义数据处理详解
2020/01/06 Python
深入浅析Python 命令行模块 Click
2020/03/11 Python
使用python实现飞机大战游戏
2020/03/23 Python
python 6行代码制作月历生成器
2020/09/18 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
css3中检验表单的required,focus,valid和invalid样式
2014/02/21 HTML / CSS
佐卡伊官网:中国知名珠宝品牌
2017/02/05 全球购物
体育课课后反思
2014/04/24 职场文书
支部书记四风对照材料
2014/08/28 职场文书
代办出身证明书
2014/10/21 职场文书
房屋授权无偿使用证明
2014/11/29 职场文书
人生遥控器观后感
2015/06/11 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
python运行脚本文件的三种方法实例
2022/06/25 Python