2010-12-28 7 views
0

Вот сделка: существует одна огромная база данных тем (содержащих несколько сообщений) и одна огромная база данных для пользователей. Каждая тема может быть связана со многими пользователями (очевидно, каждый пользователь ссылается на многие темы). В базе данных есть поле (связывающее пользователей с темами), которые содержат несколько непрочитанных сообщений. Поэтому я пытаюсь найти самый быстрый способ получить этот номер для каждой темы, связанной с текущим пользователем. Важно, чтобы это число менялось довольно быстро, поэтому метод чтения этого поля каждый раз из базы данных замедляет все. Есть ли какие-либо темы в Интернете (я ищу хорошие 50 минут и все еще ни с чем), или, может быть, просто ваши советы о том, чтобы сделать это быстрее (я думал о создании отдельной таблицы, но тоже оказалось слишком медленным). Спасибо!Способы получения количества непрочитанных сообщений

+0

Можете ли вы дать нам более подробную информацию о структуре вашего databse и о том, как вы теперь прокручиваете непрочитанные сообщения? –

+0

ok. есть таблицы ПОЛЬЗОВАТЕЛИ, ТЕМЫ, СООБЩЕНИЯ, TOPICS_TO_USERS. Когда пользователь вошел в систему, он получает список своих тем с меткой для тем, у которых есть непрочитанные сообщения (из TOPICS_TO_USERS). я думаю, что здесь нет необходимости писать здесь запрос SELECT. На главной странице я хочу показать количество непрочитанных/total_number тем в разных категориях из них (например, «количество непрочитанных, где я являюсь автором темы» и т. д. .). – whn

ответ

1

Кэширование! Вы должны сохранить в записи пользователя непрочитанные сообщения и темы. Как только пользователь получит новые сообщения или тему, прикрепленные к нему, вы должны обновить эти файлы и так же, когда он их прочтет. Эти данные можно хранить в кэшах другого типа (более быстрые). Это называется де-нормализацией.

Также вы должны настроить правильные индексы таблиц на этих таблицах.

Смежные вопросы