我希望这听起来不会太过小,会引起舆论的回答。
在我的页面上,我已经在数据库中查询了一些带有计数的值,并将它们存储在一个数组中,以便稍后在我的页面上进行格式化。 topicCount
是每个主题中发布的文章数。
topicName | topicCount
--------------|-------------
Latest News | 101
Events | 273
...
我现在决定显示所有文章的计数。现在,这就是我要做的事情:
SELECT COUNT(*) AS articleCount FROM blogArticles
$articleCount = $row['articleCount'];
但我现在很好奇是否对我的阵列运行计数会更快和/或更便宜,因为我已经在我的脚本中获得了数据。
$articleCount = 0;
foreach ($results as $key=>$value) {
$articleCount + $value['topicCount'];
}
哪种方法更好,为什么或者护理的差异太小?是否每天减少20,000个SQL请求以获得大量保存?
如果我只计算数组项count($array)
,我可能会猜测计算数组比查询数据库要快得多/便宜 - 但是必须加总数才能让我觉得可能有一个差异,特别是如果我有1000个主题与计数。
答案 0 :(得分:1)
几乎总是如此,第二次数据库调用将比在PHP中执行更多的开销;虽然您可以修改原始MySQL以返回总计以及单个主题总计。例如使用WITH ROLLUP
SELECT topicName,
COUNT(topicID) AS topicCount
FROM topicTable
GROUP BY topicName
WITH ROLLUP
应该给出类似的东西:
topicName | topicCount
--------------|-------------
Latest News | 101
Events | 273
...
NULL | 374
对于PHP> = 5.5.0,您可以使用array_sum()和array_column()改进foreach循环:
$articleCount = array_sum(
array_column(
$results,
'topicCount'
)
);