2

私のサイトには、特定の投稿のコメント数をカウントする必要があるセクションがあります。実際には、コメント DB テーブル内のすべてのデータを取得するための関数 (関数 getComments) を既に作成しています。

コメント DB テーブル構造は次のとおりです。著者ID | 日時 | 投稿 ID | 文章

今、私はそれら(コメント)を数える必要があるだけなので、サーバーリソース/冗長性の観点から使用する方が良いかどうか疑問に思っていました:

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

または、次のような別の関数 (「getComments」とは別に) を作成することをお勧めします。

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

ありがとう

ルカ

4

3 に答える 3

7

データベースでコメントをカウントする方が効率的です。

  1. カウントのみが転送されるため、データベースと php プロセスの間の帯域幅を節約できます。
  2. 結果が生成されず、データがディスクから読み取られないため、IO を保存します。
  3. RDBMS は、このような機能向けに最適化されています。

Zend_Db を次のように使用すると仮定すると、次のように動作するはずです。

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

ここでは、コードの冗長性は問題ではありません。1 行または 2 行だけです。

于 2011-05-17T09:38:06.783 に答える
3

私は常に、MySQL を使用して投稿をカウントする別の関数を使用することを好みます。カウントだけが必要な場合は、行セット全体を要求する必要がないため、パフォーマンスが向上し、リソースが節約されます。

于 2011-05-17T09:21:45.983 に答える
1

他のスレッドで私の回答を参照してください: Zend_Db: テーブルから行数を取得する方法は?

于 2011-05-17T12:09:33.087 に答える