使用mysql_num_rows会减慢页面加载速度吗?

时间:2011-11-14 04:06:49

标签: php mysql

我建了一个分类。在main / index.php页面中,我有很多类别,比如汽车,电子产品,家具等等,你可以点击它们,并列出你可以在你的城镇购买的汽车或手机列表。

我想添加/显示每个类别包含的广告数量: 汽车(74)电子产品(32)等等。

当然使用mysql_num_rows

我的问题是>这是否会使index.php页面加载速度变慢?如果是的话有多慢?毫秒,秒,很多?

谢谢:)

更新>>代码:

$query="select * FROM db_post WHERE cat='cars'";
$result= mysql_query($query);
$carnum=mysql_num_rows($result));

 <td class="car"> <li class="listclass"> <a href="city.php?cat=cars">CARS <?php echo "("."$carnum".")"; ?></a></li> </td> <?php echo  ?> 

我想要的只是数字。 mysql_num_rows和SELECT COUNT(*)在速度方面有区别吗?

4 个答案:

答案 0 :(得分:2)

如果可能,最好缓存值。在低使用率的网站上,您不会看到太多差异,但添加了很多用户,您可能希望缓存这些值,直到它们被更改为止。

答案 1 :(得分:2)

单独使用mysql_num_rows()本身并不慢。如果您正在使用它,因为(比如说)您选择的每个产品并显示匹配的行数, 将会很慢!如果您只需要一个计数,请让数据库使用如下查询进行计数:

SELECT COUNT(*) FROM ... WHERE ...

如果您需要一堆计数,请使用以下内容:

SELECT ..., COUNT(*) FROM ... WHERE ... GROUP BY ...

通常,尝试通过避免不必要的查询,返回未使用的行或在摘要足够时加载数据来减少SQL Server为整个页面返回的总行数。作为一般规则,返回的行越少越好!

答案 2 :(得分:1)

我会做类似的事情  select category_name, count( category_id ) from table group by category_id

理想情况下,如果您有大量数据(基本服务器上有数千行)和大量流量(每天数千次点击),您可能希望缓存这些结果并每分钟运行一次查询。如果你每天只有数百次点击,我不会担心,因为你的解决方案可能会很好。

答案 3 :(得分:1)

“poage load”的速度无关紧要 这是数据库使用的基础知识问题 主要规则是:

始终只选择您需要的数据。

如果只需要行数 - 选择行数,而不是行数 有了主意吗?

让数据库尽可能多地进行计算。