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
3.从实例开始
Oct 09 PHP
dedecms后台验证码总提示错误的解决方法
Mar 21 PHP
一个PHP并发访问实例代码
Sep 06 PHP
php curl模拟post提交数据示例
Dec 31 PHP
PHP实现WebService的简单示例和实现步骤
Mar 27 PHP
php常用表单验证类用法实例
Jun 18 PHP
使用纯php代码实现页面伪静态的方法
Jul 25 PHP
PHP中strpos、strstr和stripos、stristr函数分析
Jun 11 PHP
PHP递归实现快速排序的方法示例
Dec 18 PHP
PHP实现可精确验证身份证号码的工具类示例
May 31 PHP
php微信开发之关注事件
Jun 14 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
Yii编程开发常见调用技巧集锦
2016/07/15 PHP
在Laravel中实现使用AJAX动态刷新部分页面
2019/10/15 PHP
jquery模拟按下回车实现代码
2011/09/20 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
2015/10/08 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
Node.js之网络通讯模块实现浅析
2017/04/01 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
Python入门教程之if语句的用法
2015/05/14 Python
Python中使用bidict模块双向字典结构的奇技淫巧
2016/07/12 Python
浅谈编码,解码,乱码的问题
2016/12/30 Python
浅谈五大Python Web框架
2017/03/20 Python
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
Python实现的建造者模式示例
2018/08/06 Python
python实现简单日期工具类
2019/04/24 Python
python多线程下信号处理程序示例
2019/05/31 Python
在Python中COM口的调用方法
2019/07/03 Python
python实现PDF中表格转化为Excel的方法
2020/06/16 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
Python的logging模块基本用法
2020/12/24 Python
英国网上香水店:Fragrance Direct
2016/07/20 全球购物
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
英国高街奥特莱斯:Highstreet Outlet
2019/11/21 全球购物
Urban Decay官方网站:美国化妆品品牌
2020/06/04 全球购物
C和C++经典笔试题附答案解析
2014/08/18 面试题
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
大学生推广普通话演讲稿
2014/09/21 职场文书
年会邀请函范文
2015/01/30 职场文书
校长新学期寄语2016
2015/12/04 职场文书
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers