一般来说,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秒左右。