我在一个PHP页面上有几个SELECT
语句,我使用Dreamweaver来生成它们。
在检查了它生成的代码之后,似乎有很多我可以在大多数情况下删去的错误,每个语句的mysql_num_rows()
行就是一个例子。
所以我想知道是否有人能告诉我这是否实际上节省资源-考虑到查询正在运行,无论如何,这是否有任何实际的开销?
更新:在遵循Chriszuma关于微时间的建议后,以下是我的结果:
//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
所以没有太多的开销,看起来
mysql_num_rows()在被获取后计算行。这就像你获取所有行并将它们存储在PHP数组中,然后运行count($array)
。但是mysql_num_rows()是在MySQL客户端库中用C语言实现的,所以它应该比等效的PHP代码更有效。
请注意,为了使mysql_num_rows()工作,您必须在PHP的内存空间中拥有查询的完整结果。因此存在开销,因为查询结果集可能很大,并且占用大量内存。
我希望这样的调用对性能的影响极小。它只是计算内部存储查询结果的行数。SQL查询本身将占用绝大部分的处理时间。
如果你想确切地知道,你可以在调用之前和之后执行microtime(),看看它到底花了多长时间。
$startTime = microtime(true);
mysql_num_rows();
$time = microtime(true) - $startTime;
echo("mysql_num_rows() execution: $time secondsn");
我怀疑你会在微秒范围内看到一些东西