3

我知道,mysql_num_rows ( resource $result )但我在某处读到它不是 100% 准确的。我已经看到其他替代方案实际上得到每一行并运行一个计数器,但这听起来效率很低。我有兴趣了解其他人如何获得准确有效的计数。

4

3 回答 3

10

mysql_num_rows()是准确的,只要您不使用mysql_unbuffered_query().

如果您使用的是mysql_query()mysql_num_rows()是准确的。

如果您使用mysql_unbuffered_query(),mysql_num_rows()将返回错误的结果,直到检索到所有行。

于 2009-07-28T01:08:19.307 回答
2

mysql_num_rows()在您完成SELECTorSHOW查询和查询mysql_affected_rows()时使用INSERT, UPDATE, REPLACE or DELETE
两者都足够准确!

于 2009-07-28T01:12:42.413 回答
0

确切地知道你在用行数做什么会有所帮助,但我会假设它是用于分页结果集的非常标准的应用程序。

发出两个查询。第一个是具有第二个的所有 WHERE 条件的 COUNT 查询。第二个用于获取行。当您只显示其中的 10 行时,要么是这个,要么将 1,000 行加载到内存中。

但是,如果您需要保证准确性,则必须将这两个查询包装在一个读一致性事务中。否则,恰好在计数和数据查询之间运行的查询可能会使分页信息无效。

于 2009-07-28T01:29:23.453 回答