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 相关文章推荐
信用卡效验程序
Oct 09 PHP
第八节--访问方式
Nov 16 PHP
PHP中的array数组类型分析说明
Jul 27 PHP
Laravel 5框架学习之Eloquent 关系
Apr 09 PHP
php实现面包屑导航例子分享
Dec 19 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
laravel创建类似ThinPHP中functions.php的全局函数
Nov 26 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
Dec 23 PHP
ThinkPHP中create()方法自动验证实例
Apr 26 PHP
PHP创建单例后台进程的方法示例
May 23 PHP
PHP迭代器和生成器用法实例分析
Sep 28 PHP
Laravel框架中集成MongoDB和使用详解
Oct 17 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管理内存函数 memory_get_usage()使用介绍
2012/09/23 PHP
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
php 5.4 全新的代码复用Trait详解
2017/01/05 PHP
laravel migrate初学常见错误的解决方法
2017/10/11 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
关于图片验证码设计的思考
2007/01/29 Javascript
用jQuery实现检测浏览器及版本的脚本代码
2008/01/22 Javascript
jQuery Ajax文件上传(php)
2009/06/16 Javascript
jquery 操作DOM的基本用法分享
2012/04/05 Javascript
ECMAScript 创建自己的js类库
2012/11/22 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
基于jQuery实现最基本的淡入淡出效果实例
2015/02/02 Javascript
node.js插件nodeclipse安装图文教程
2020/10/19 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
Javascript实现代码折叠功能
2016/08/25 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
2016/10/25 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
vue.js template模板的使用(仿饿了么布局)
2018/08/13 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
2020/04/20 Javascript
Python编程之多态用法实例详解
2015/05/19 Python
剖析Python的Tornado框架中session支持的实现代码
2015/08/21 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
Flask解决跨域的问题示例代码
2018/02/12 Python
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
python中类与对象之间的关系详解
2020/12/16 Python
python接口自动化框架实战
2020/12/23 Python
phonegap常用事件总结(必看篇)
2017/03/31 HTML / CSS
Agoda台湾官网:国内外订房2折起
2018/03/20 全球购物
市场营销职业生涯规划书范文
2014/01/12 职场文书
三八妇女节活动总结
2014/05/04 职场文书
2014市国税局对照检查材料思想汇报
2014/09/23 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
JS代码编译器Monaco使用方法
2021/06/11 Javascript
Python turtle实现贪吃蛇游戏
2021/06/18 Python