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中使用PDF文档功能
Oct 09 PHP
默默简单的写了一个模板引擎
Jan 02 PHP
PHP写的求多项式导数的函数代码
Jul 04 PHP
基于curl数据采集之单页面采集函数get_html的使用
Apr 28 PHP
浅析PHP中的UNICODE 编码与解码
Jun 29 PHP
PHP函数microtime()用法与说明
Dec 04 PHP
php自定义函数截取汉字长度
May 15 PHP
CodeIgniter安全相关设置汇总
Jul 03 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
Nov 04 PHP
PHP实现C#山寨ArrayList的方法
Jul 16 PHP
深入理解PHP 数组之count 函数
Jun 13 PHP
PHP实现Redis单据锁以及防止并发重复写入
Apr 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
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
php实现在服务器端调整图片大小的方法
2015/06/16 PHP
PHP函数引用返回的实例详解
2016/09/11 PHP
jquery下异步提交表单 异步跨域提交表单
2010/11/17 Javascript
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
JavaScript事件处理器中的event参数使用介绍
2013/05/24 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
JavaScript实现的购物车效果可以运用在好多地方
2014/05/09 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
实践中学习AngularJS表单
2016/03/21 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
Boostrap基础教程之JavaScript插件篇
2016/09/08 Javascript
基于javascript的Form表单验证
2016/12/29 Javascript
2种简单的js倒计时方式
2017/10/20 Javascript
JS控制鼠标拒绝点击某一按钮的实例
2017/12/29 Javascript
javascript实现遮罩层动态效果实例
2019/05/14 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
Vue-CLI 项目在pycharm中配置方法
2019/08/30 Javascript
python self,cls,decorator的理解
2009/07/13 Python
介绍Python中的一些高级编程技巧
2015/04/02 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
2021/01/27 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
html5 postMessage前端跨域并前端监听的方法示例
2018/11/01 HTML / CSS
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
德国领先的大尺码和超大尺码男装在线零售商:Bigtex
2019/06/22 全球购物
盖尔斯工厂店:GUESS Factory
2020/01/21 全球购物
J2EE中常用的名词进行解释
2015/11/09 面试题
高级人员简历的自我评价分享
2013/11/03 职场文书
球队口号
2014/06/18 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
支行行长岗位职责
2015/02/15 职场文书
python spilt()分隔字符串的实现示例
2021/05/21 Python
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript