-1

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

每当询问结果的不同页面时,都会再次执行查询,而改变的是“限制”。

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

据我了解,数据库每次都会自行搜索,并且会根据x和返回不同的结果y

4

1 回答 1

1

您根本无法通过一个查询(有效地)做到这一点,您总是需要一个来选择结果,一个来获取项目的总数。

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

// 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索引列,这将节省大量时间。记住,这个(mysql-)数据库是为快速搜索而设计的,php 不是


如果你有一个庞大的数据集,你可能想一直改变策略。您可以计算行数并创建一个新表,您可以调用类似的东西table_info并添加一个调用的行number_of_rows_in_TABLENAME并使用新的插入更新它,然后减去一个删除一行,但是这种方法会变得非常草率,因为您会忘记一些东西

于 2013-11-11T13:16:34.833 回答