我有一张大表(60+)数百万条记录。
我正在使用 PHP 脚本浏览此表。
PHP 脚本(带分页)加载速度非常快,因为:
表引擎是 InnoDB 因此SELECT COUNT()
非常慢并且mysql_num_rows()
不是一个选项,所以我将总行数(我用来生成分页的数字)保存在一个单独的表中(我更新这个记录和total_rows=total_rows-1
期间total_rows=total_rows1+1
)。DELETE
INSERT
但问题是如何处理搜索结果的分页?
现在我用两个步骤来做这件事:
1.
$condition = " fname='rinchik' ";
$result = "SELECT * FROM my_large_table WHERE" . $condition;
在这里,我从数据库中获得了所有搜索结果。
2. 现在我需要计算这些结果来创建分页。我正在这样做:
$condition; <- we already have this from the step 1
$result_count = "SELECT COUNT(id) FROM my_large_table WHERE" . $condition;
而且有点慢。
如果我这样做(只需一步)会更好吗?:
$condition = " fname='rinchik' ";
$result = "SELECT * FROM my_large_table WHERE" . $condition;
$result_count = mysql_num_rows($result);