博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP分页代码中的SQL语句可以换个写法
阅读量:5895 次
发布时间:2019-06-19

本文共 842 字,大约阅读时间需要 2 分钟。

一般来说,PHP写分页功能时,只要用的还是MySQL,基本都是两步走

1、取得总数,算页数。SQL语句自然是SELECT count(*) FROM tablename;

2、根据指定的页码号,取得相应的数据。对应的SQL语句,在网上随便查,都是一样的:

    SELECT f1,f2 FROM table LIMIT offset,length

语法,不解释了。

数据量小的时候,这么写,没事。

如果数据量大呢?不是一般大,上百万呢。

 

试着运行一下:

SELECT id FROM users LIMIT 1000000,10

在我的电脑上,第一次运行,显示如下:

10 rows in set (9.38 sec)

之后再运行,显示如下:

10 rows in set (0.38 sec)

这不奇怪。MySQL对已经运行的SQL语句有缓冲,可以很快把之前的数据拿出来。

 

无论如何,第一次的9秒多,我实在不能接受。

换个写法:

SELECT id FROM users WHERE id>1000000 LIMIT 10;

显示:10 rows in set (0.00 sec)

 事实上,用phpMyAdmin去看,“显示行 0 - 9 (10 总计, 查询花费 0.0011 秒)”,之后再运行,基本都在0.0003秒左右。

 

原理?不想解释了。

 

当然,对绝大多数实际的WEB应用来说,需要分页的地方往往数据量不大,几百上千就算多了。对这样的数据量,效率的提升可以忽略不计。费那个劲,吃饱了撑的!

 

可我也不是犯贱啊!!~~平白无故的为啥要改呢?因为俺要在首页显示最新的几篇博客文章,最新的几个BBS帖子,最新的几条评论。。。即使考虑在校园网的环境里,用户数不算很多(10万以下),但BBS里帖子搞个几百万还是很轻松的。

 

所以。。。还是换个方式好点。

 

转载于:https://www.cnblogs.com/tecfaq/archive/2012/03/09/2386033.html

你可能感兴趣的文章
《社交网站界面设计(原书第2版)》——1.7 反模式的重要性
查看>>
2016上半年DDoS攻击报告:DDoS攻击的规模和攻击频率都在不断攀升
查看>>
混合云、区块链、认知技术,还有哪一样前沿技术是IBM没提到的吗?
查看>>
呼叫中心现场管理人员注意事项
查看>>
nagios监控远程windows服务器
查看>>
lagp,lacp详解
查看>>
J2ee项目性能调优-垃圾收集器(gc)
查看>>
LVS之DR模式原理与实践
查看>>
自动化运维之SaltStack(概述及简单配置实例)
查看>>
导出excel
查看>>
struts2+extjs
查看>>
MariaDB初识
查看>>
php安装swoole扩展支持openssl和wss遇到的坑
查看>>
Apache2.4.33安装无systemctl/service status/state显示
查看>>
花花世界花家姐 舒淇:花花世界花我不会倒追
查看>>
全栈数据之数据挖掘的33个知识点整理
查看>>
Docker的系统资源限制及验证
查看>>
C++基础教程
查看>>
在大公司呆5年,你就废了
查看>>
mac mamp mysql no start servel
查看>>