php mysql php MySQL与分页效率
程序员文章站
2022-05-12 14:34:32
...
最基本的分页方式:
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
----------------------------------------
实际可以利用类似策略模式的方式去处理分页,比如判断如果是一百页以内,就使用最基本的分页方式,大于一百页,则使用子查询的分页方式。
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 php MySQL与分页效率,包括了php mysql方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
上一篇: 浅谈CSS浮动的方法介绍
下一篇: CSS之巧用渐变
推荐阅读
-
php调用mysql数据 dbclass类_PHP
-
windows环境下面安装Apache2.4+MySql5.7+PHP5.6,apache2.4mysql5.7_PHP教程
-
MySQL大批量数据插入,PHP之for不断插入时出现缓慢的解决方案及
-
用PHP+MYSQL 实现论坛里的分级+分页显示
-
apmserv中修改mysql的root与phpmyadmin密码方法介绍_PHP教程
-
PHP程序员面试题(经典汇总,mysql为主)
-
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结,mysqlutf-8
-
php mysql替换字符串方法
-
第一次安装php5.5.14(mysql的问题)
-
php与Mysql日期时间(UNIX时间戳、格式化日期)转换的方法