mysql_num_rows()php - 它有效吗?

时间:2011-09-15 15:53:21

标签: php mysql performance mysql-num-rows

我在PHP页面上有几个SELECT语句,我使用Dreamweaver生成这些语句。

在完成它生成的代码后,在大多数情况下似乎有很多可以减少的漏洞,每个语句的mysql_num_rows()行就是一个例子。

所以我想知道是否有人可以告诉我这是否实际上节省了资源 - 考虑到查询是否正在运行,是否有任何实际开销?


更新: 在遵循Chriszuma关于microtime的建议后,以下是我的结果:

//time before running the query
1: 0.46837500 1316102620

//time after the query ran
2: 0.53913800 1316102620

//time before calling mysql_num_rows()
3: 0.53914200 1316102620

//time after mysql_num_rows()
4: 0.53914500 1316102620 

所以开销不多,似乎

2 个答案:

答案 0 :(得分:4)

mysql_num_rows()在获取之后对行进行计数。就像你获取所有行并将它们存储在PHP数组中一样,然后运行count($array)。但mysql_num_rows()是在MySQL客户端库中的C中实现的,因此它应该比同等的​​PHP代码更有效。

请注意,为了使mysql_num_rows()起作用,您必须在PHP的内存空间中获得查询的完整结果。因此,在查询结果集可能很大的意义上存在开销,并占用大量内存。

答案 1 :(得分:3)

我希望这样的调用对性能的影响极小。它只是计算其内部存储的查询结果的行。 SQL查询本身将占用绝大部分的处理时间。

如果您想确切知道,可以在通话前后执行microtime(),以确切了解其持续时间。

$startTime = microtime(true);
mysql_num_rows();
$time = microtime(true) - $startTime;
echo("mysql_num_rows() execution: $time seconds\n");

我怀疑你会在微秒范围内看到一些东西。