Количество сообщений в теме форума

tim-ua

Новичок
Количество сообщений в теме форума

Подскажите как лучше организовать вывод количества сообщений в теме форума, если делать одним запросом и подсчитывать при выводе всех тем количество сообщений для каждой то нужно использовать вложенные запросы что отразится на быстродействии, либо можно в таблице с форумами сделать поле с количеством сообщений и при добавлении или удалении сообщения прибавлять или отнимать при удалении от значения в поле.
Есть еще какие-то варианты реализации? И если нет - помогите с написанием вложенного запроса.
Заранее всем спасибо.
 

dimagolov

Новичок
в таблице с форумами сделать поле с количеством сообщений и при добавлении или удалении сообщения прибавлять или отнимать при удалении от значения в поле.
вполне нормальный вариант.
 

Luge

Нестандартное звание
tim-ua
вопрос не в красоте запроса, а в целесообразности
 

Фанат

oncle terrible
Команда форума
денормализация - это, действительно, всегда некрасиво.

SELECT t.*, count(p.id) from themes t, posts p where p.tid = t.id GROUP BY tid
 

Luge

Нестандартное звание
буду жестоко троллить.
каждый раз считать, а при наличии условия даже в MyISAM будут проводиться подсчёты, то, что является просто «фенечкой» — глупо. Некрасиво будет держать всю базу в одной таблице, а избавить себя от лишней головной боли и дёрганья дополнительных таблиц — вполне разумно.
 

zerkms

TDD infected
Команда форума
почему только никто не озвучил, что обновлять этот счётчик можно (нужно) триггерами...

-~{}~ 26.03.10 03:45:

Fortop
а я думаю, что ***** иронизировал :)
 

Фанат

oncle terrible
Команда форума
Избавить себя от лишней головной боли - это как раз переложить ее на базу - пусть она думает, удаляли мы сообщения из темы, или нет :)
 

Luge

Нестандартное звание
а давайте тогда всё делать красиво и по правила: удалённые сообщения не удалять, а отмечать как удалённые и потом сборщиком мусора удалять насовсем. И добавим в подсчёт количества ещё одно условие. А при добавлении заюзаем транзакции. А что? Возможность же существует. Почему бы не запихнуть. И всё для никому ненужного количества сообщений. А если, вдруг, наш форум будет популярен и захочется использовать кэширование, то что будем в статику складывать? Правильно, то, на что всем начхать и на изменение чего юзер не обратит внимание— статистику по количеству сообщений в теме. И опять получаем какое-то одно поле для этих данных, только уже в кэше.

Во, придумал, а давайте ещё количества сообщений пользователей считать запросом :)
 

zerkms

TDD infected
Команда форума
Luge
т.е. если я скажу "внимание, сейчас я буду грабить магазин", то это меня в будущем избавит от последствий? не тупи.
 

Luge

Нестандартное звание
если после этой фразы не будут кадый раз вставлять «не тупи», а примут другие меры, то, может и избавит :)

UPD. хотя, простое игнорирование тоже спасло бы положение ;)
 
Сверху