2011-09-15 58 views
6

我在PHP页面上有几个SELECT语句,并且我使用Dreamweaver生成了这些语句。mysql_num_rows()php - 效率高吗?

通过它生成的代码会后,似乎有很多绒毛,我可以切出在大多数情况下,一个mysql_num_rows()线为每个语句作为一个例子。

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


UPDATE: 以下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

PHP中的函数调用总是会有开销,但它通常是最小的,除非您调用它几十万次...... – DaveRandom

回答

3

我预计这样的电话会对性能影响极小。它只是对其内部存储的查询结果的行进行计数。 SQL查询本身将占用绝大部分处理时间。

如果您想知道确切的情况,您可以在呼叫前后执行microtime()以查看确切的时间。

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

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

+1

这工作虽然我在编写代码时做了一个快速而脏的测试每次只是自己调用microtime():) – jammypeach

4

mysql_num_rows()在之后对进行计数,它们已被提取。这就像您抓取所有行并将它们存储在PHP数组中,然后运行count($array)。但mysql_num_rows()在MySQL客户端库中的C中实现,所以它应该比等效的PHP代码更高效一些。

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

+1

+1这就是为什么当您使用[mysql_unbuffered_query](http://php.net/manual/en/function.mysql-unbuffered-query)时'mysql_num_rows'将不起作用。 PHP) – webbiedave