您根本无法通过一个查询(有效地)做到这一点,您总是需要一个来选择结果,一个来获取项目的总数。
不过有一种改进方法,您只需要第二个查询中的行数:
// 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
并使用新的插入更新它,然后减去一个删除一行,但是这种方法会变得非常草率,因为您会忘记一些东西