我知道,mysql_num_rows ( resource $result )
但我在某处读到它不是 100% 准确的。我已经看到其他替代方案实际上得到每一行并运行一个计数器,但这听起来效率很低。我有兴趣了解其他人如何获得准确有效的计数。
问问题
193 次
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()
在您完成SELECT
orSHOW
查询和查询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 回答