PHP性能和冗余

时间:2011-05-17 09:15:54

标签: php mysql redundancy

我的网站中有一个部分,我需要计算特定帖子的注释数量。我实际上已经构建了一个函数来检索注释数据库表中的所有数据(函数getComments)。

注释DB表结构是:id(PK)| authorId | datetime | postId |文本

现在,因为我只需要计算它们(评论),我想知道在服务器资源/冗余方面是否更好用:

$comments=new Comment();
$comments->getComments();
echo count($comments);

或者我最好建立另一个功能(除了'getComments'),如:

function countComments($postid)
{
  //count comments per post
}

感谢

卢卡

3 个答案:

答案 0 :(得分:7)

在数据库中计算您的评论更有效,因为

  1. 只传输了计数,因此您在数据库和php之间节省带宽 过程
  2. 保存IO ,因为未生成结果且未从磁盘读取数据
  3. 针对此类功能优化了 RDBMS
  4. 假设你使用Zend_Db这样的东西应该可以工作:

    $query = $db->select()->from('comments', 'count(*)');
    $count = $db->fetchOne($query);
    

    代码冗余不是问题恕我直言,这只是一两行。

答案 1 :(得分:3)

我总是更喜欢使用一个单独的函数,它使用MySQL来计算帖子。因为如果您只需要计数,则不必请求整个行集,这样可以提高性能并节省资源。

答案 2 :(得分:1)

在其他帖子中查看我的回答:Zend_Db: How to get the number of rows from a table?