Производительность и избыточность PHP - PullRequest
2 голосов
/ 17 мая 2011

У меня есть раздел на моем сайте, где мне нужно подсчитать количество комментариев к конкретному сообщению. На самом деле я уже создал функцию для извлечения всех данных из таблицы БД комментариев (функция getComments).

структура таблицы БД комментариев: id (PK) |authorId |дата и время |postId |текст

Теперь, поскольку мне просто нужно их посчитать (комментарии), мне было интересно, лучше ли использовать в терминах ресурсов / избыточности сервера:

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

Или я?лучше построить другую функцию (кроме getComments), например:

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

спасибо

Luca

Ответы [ 3 ]

7 голосов
/ 17 мая 2011

Подсчет ваших комментариев в базе данных более эффективен, потому что

  1. Передается только количество, поэтому вы сохраняете пропускную способность между вашей базой данных и процессом php.
  2. Вы сохраняете ввод-вывод , поскольку результат не генерируется и данные не читаются с диска
  3. A СУБД оптимизирована для таких функций.

Предполагается, что вы используете Zend_Db, что-то вроде этого должно работать:

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

Избыточность кода не является проблемой ИМХО здесь, это просто одна или две строки.

3 голосов
/ 17 мая 2011

Я всегда предпочел бы использовать отдельную функцию, которая использует MySQL для подсчета постов. Потому что, если вам просто нужен счетчик, вам не нужно запрашивать весь набор строк, что повышает производительность и экономит ресурсы.

1 голос
/ 17 мая 2011

Смотрите мой ответ в другой теме: Zend_Db: Как получить количество строк в таблице?

...