php MySQL与分页效率

 更新时间:2008年06月04日 19:57:59   作者:  
作者:老王 如果和MSSQL的TOP语法相比,那么MySQL的LIMIT语法要显得优雅了许多。使用它来分页是再自然不过的事情了。
 
最基本的分页方式:
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简单实现上一页下一页功能示例

    这篇文章主要介绍了PHP简单实现上一页下一页功能,结合实例形式较为详细的分析了php实现上一页下一页功能的原理与具体实现技巧,需要的朋友可以参考下
    2016-09-09
  • PHP mkdir()定义和用法

    PHP mkdir()定义和用法

    mkdir() 函数创建目录。若成功,则返回 true,否则返回 false。
    2009-01-01
  • php中支持多种编码的中文字符串截取函数!

    php中支持多种编码的中文字符串截取函数!

    php中支持多种编码的中文字符串截取函数!...
    2007-03-03
  • PHP Session ID的实现原理与实例

    PHP Session ID的实现原理与实例

    这篇文章主要介绍了PHP Session ID的实现原理与实例,帮助大家更好的理解和学习使用PHP,感兴趣的朋友可以了解下
    2021-05-05
  • php文档更新介绍

    php文档更新介绍

    php.net最近更新了php文档,比较有用的是新增的pman工具。pman是一个命令行小工具,方便查看php函数的本地帮助文档,但是不包含php.net的评论数据。
    2011-07-07
  • PHP中SESSION的注销与清除

    PHP中SESSION的注销与清除

    本文给大家分享的是PHP中SESSION的注销与清除的方法和示例,非常的实用,有需要的小伙伴可以参考下。
    2015-04-04
  • PHP输出XML格式数据的方法总结

    PHP输出XML格式数据的方法总结

    这篇文章主要介绍了PHP输出XML格式数据的方法,结合实例形式总结分析了php常用的xml格式数据输出相关操作技巧,需要的朋友可以参考下
    2017-02-02
  • 教你如何快捷的使用cmd访问mysql小技巧

    教你如何快捷的使用cmd访问mysql小技巧

    平时我们如果想用cmd访问mysql数据库,需要先一步步进入到mysql的目录下,才能执行MYSQL命令,进行操作,下面介绍一种直接在cmd中执行mysql命令的方法,大赞!
    2014-05-05
  • 使用php实现截取指定长度

    使用php实现截取指定长度

    以下是对使用php实现截取指定长度的方法进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • PHP编程函数安全篇

    PHP编程函数安全篇

    关于脚本安全这个话题好像永远没完没了,如果你经常到国外的各种各样的bugtraq上,你会发现有一半以上都和脚本相关,诸如SQL injection,XSS,Path Disclosure,Remote commands execution这样的字眼比比皆是,我们看了之后的用途难道仅仅是抓肉鸡?
    2013-01-01

最新评论