Хорошо, поэтому мне нравится создавать программное обеспечение для форумов с PHP и MySQL, хотя есть одна вещь, которая меня всегда беспокоила, и только одна вещь;Создание программного обеспечения для форума - поиск лучшего способа сделать 1 вещь
Главная страница форумов, на которой вы просматриваете список форумов. Каждый форум показывает название форума, количество сообщений, сделанных на этом форуме, количество обсуждений на этом форуме и последний плакат на форуме. Возникает проблема, получая все эти данные, когда все эти вещи хранятся в разных таблицах. Это не большая проблема, чтобы ПОЛУЧИТЬ это, а не проблема, но сделать это ЭФФЕКТИВНО - это то, что мне нужно.
Мой нынешний подход - это; Храните текущее количество сообщений, обсуждений и последнего плаката статически в самой таблице форума вместо того, чтобы выходить и захватывать данные из разных таблиц - «сообщения», «обсуждения», «форумы» и т. Д. Затем, когда сообщения пользователей, он обновляет таблицу «форумов», увеличивая количество сообщений на 1 и обновляя последний плакат, а также увеличивая количество обсуждений на 1, если они приступают к новому обсуждению. По какой-то причине это кажется мне неэффективным и грязным, но, возможно, это только я.
И вот еще один подход, который, я боюсь, был бы ужасно неэффективным; Фактически выходить на каждый стол - «сообщения», «обсуждения», «форумы» - и захватывать данные. Проблема в том, что на одной странице могут быть сотни форумов ... И мне нужно будет использовать оператор COUNT для получения количества сообщений или обсуждений, то есть мне придется использовать подзапросы - не говоря уже о третий подзапрос, чтобы получить последний плакат. Это, как говорится ... Запрос будет что-то вроде этого псевдо-коды, как-вещей:
SELECT foruminfo, (
SELECT COUNT(id)
FROM posts
WHERE forumId = someid
), (
SELECT COUNT(id)
FROM discussions
WHERE forumId = someid
), (
SELECT postinfo
FROM posts
WHERE forumId = someid
ORDER BY postdate
DESC LIMIT 1
)
FROM forums
ORDER BY position DESC;
Поэтому в основном эти подзапросы можно запускать сотни раз, если у меня есть сотни форумов быть перечислены. И с сотнями пользователей, просматривающих страницу каждую секунду, не помешало бы этому немного напрячься? Я не совсем уверен, что подзапросы вызывают ту же нагрузку, что и обычные запросы, или нет, но если они это сделают, то, похоже, это будет ужасно неэффективно.
Любые идеи? :(