PHP 搜索结果分页,无需多次运行查询


PHP search results pagination without running the query multiple times

我在网上搜索了如何在PHP中进行搜索结果分页,我遇到了这样的帖子:http://php.about.com/od/phpwithmysql/ss/php_pagination.htm

每当询问结果的不同页面时,都会再次执行查询,并且更改的是"限制"。

但是,如果我的数据库非常大并且我想避免每次都搜索它(使用类似 select * from articles where HTML like '%dummy%' limit x, y 的东西)怎么办?

据我了解,数据库每次都会自行搜索,它会根据xy返回不同的结果。

您根本无法通过一个查询(有效地)执行此操作,您将始终需要一个查询来选择结果,另一个查询来获取总计的项目数。

不过有一种方法可以改进它,您只需要第二个查询中的行数:

// Query one, to select the actual content:
Select * from articles where HTML like '%dummy%' LIMIT $start,$num_items
// Query two, select an index column, preferable a small int column:
Select id from articles where HTML like '%dummy%' 

我一直在做一个网上商店,不是最大的数据库,而是 3500 种产品,有 1 到 N 张图像、1 到 N 类和其他一些非常大的表格(数量),而且效果很好:)


如果需要,可以在 1 个查询中执行此操作。只需选择整堆,让 PHP 跳过行直到达到start并在达到limit时中断循环。但是,这比再次运行查询需要更多的时间(和资源!如果要提高速度,请确保已为html列编制索引,这将节省大量时间。Rememer,这个(mysql-)数据库是为快速搜索而设计的,php不是


如果你有一个庞大的数据集,你可能想一直改变策略。您可以计算行数并创建一个新表,您可以调用类似table_info的内容,并添加一个名为number_of_rows_in_TABLENAME的行并用新的插入进行更新,然后减去其中一个删除一行,但是这种方法很快就会变得草率,以至于您忘记了一些东西