6

我在一个 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 

所以似乎根本没有太多开销

4

2 回答 2

4

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

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

于 2011-09-15T16:03:42.693 回答
3

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

如果您想确定,可以在调用前后执行microtime()以查看确切的时间。

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

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

于 2011-09-15T15:55:48.947 回答