我建了一个分类。在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(*)在速度方面有区别吗?
答案 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”的速度无关紧要 这是数据库使用的基础知识问题 主要规则是:
始终只选择您需要的数据。
如果只需要行数 - 选择行数,而不是行数 有了主意吗?
让数据库尽可能多地进行计算。