我在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
所以开销不多,似乎
答案 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");
我怀疑你会在微秒范围内看到一些东西。