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 相关文章推荐
Mysql中limit的用法方法详解与注意事项
Apr 19 PHP
PHP cron中的批处理
Sep 16 PHP
40个迹象表明你还是PHP菜鸟
Sep 29 PHP
PHP中对用户身份认证实现两种方法
Jun 04 PHP
PHPThumb图片处理实例
May 03 PHP
详谈PHP文件目录基础操作
Nov 11 PHP
php的sso单点登录实现方法
Jan 08 PHP
ThinkPHP里用U方法调用js文件实例
Jun 18 PHP
PHP通过curl获取接口URL的数据方法
May 31 PHP
微信公众号之主动给用户发送消息功能
Jun 22 PHP
Laravel 验证码认证学习记录小结
Dec 20 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
Dec 30 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.ini 配置文件的深入解析
2013/06/17 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
php数组查找函数总结
2014/11/18 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
php图形jpgraph操作实例分析
2017/02/22 PHP
javascript操作符"!~"详解
2015/02/10 Javascript
简介JavaScript中的push()方法的使用
2015/06/09 Javascript
JavaScript动态设置div的样式的方法
2015/12/26 Javascript
极易被忽视的javascript面试题七问七答
2016/02/15 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
详谈JS中数组的迭代方法和归并方法
2017/08/11 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
javascript实现图片轮播代码
2019/07/09 Javascript
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
讲解Python中运算符使用时的优先级
2015/05/14 Python
Python验证企业工商注册码
2015/10/25 Python
利用Python生成文件md5校验值函数的方法
2017/01/10 Python
Python中字典(dict)合并的四种方法总结
2017/08/10 Python
tensorflow实现简单逻辑回归
2018/09/07 Python
使用python将图片按标签分入不同文件夹的方法
2018/12/08 Python
python 中如何获取列表的索引
2019/07/02 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
localStorage、sessionStorage使用总结
2017/11/17 HTML / CSS
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
一道输出判断型Java面试题
2014/10/01 面试题
教师自荐信范文
2013/12/09 职场文书
班组安全员工作职责
2014/02/01 职场文书
培训讲师岗位职责
2014/04/13 职场文书
国家奖学金获奖感言
2014/08/16 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
保护动物的宣传语
2015/07/13 职场文书
教师病假条范文
2015/08/17 职场文书
Python中for后接else的语法使用
2021/05/18 Python