Вы не зашли.
Главная » SQL » Алгоритм AKA "в этой теме есть непрочитанные сообщения"
#1. Morgan Off (10)
Участник
2010.08.07 23:11
Единственно что прихдод на ум, это вот такой алгоритм.
Если таблица : users_view_topics с полями tid (id темы), date (последняя дата просмотра данной темы).
при просмотре списка тем сравнивать, если последний пост темы > последний визит юзера в данную тему, уведомлять о том что есть новые посты.
При просмотре темы, обновлять информацию в таблице users_view_topics;
Может есть более экономные для бд алгоритмы ?
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#2. Gemorroj On (107)
Administrator
2010.08.08 00:12
писать в таблицу с темами дату последнего поста. и сравнивать по этой дате. (на дате, конечно, должен стоять ключ)
так же правильно было бы использовать тип таблиц InnoDB и в данном случае нужна транзакция, т.к. уже вырисовывается как минимум 2 связанных инсерта. т.е. один из них невозможен без другого.
#3. Morgan Off (10)
Участник
2010.08.08 01:01
тут подсчитать, если 100 юзеров, и около 1000тем := 100 x 1000 = 100 000 (в самом худшем случае).
других идей нет?
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#4. Gemorroj On (107)
Administrator
2010.08.08 10:10
ну только если создавать еще таблицу и писать туда id пользователя и id непрочитанной темы.
#5. Morgan Off (10)
Участник
2010.08.08 11:11
а как отнесёшься к записям типа
`users` = '1,2,5,10';
в таблице с полями `tid` (id темы), `users` (id пользователей, просмотревших эту тему, через запятую (','));
а дата обновления темы берется прямо из таблицы тем
Отредактировано Morgan (2010.08.08 11:11)
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#6. Gemorroj On (107)
Administrator
2010.08.08 12:12
1) как ты собираешься в таком случае получать ID тем?
2) в любом случае, правильней было бы использовать сериализованный массив, а не id через запятую.

вероятно, пост N4 нужно исправить на "создавать еще таблицу и писать туда id пользователя и id прочитанной темы." думаю, так будет оптимально.
ставишь уникальный ключ на id пользователя и id темы и пишешь туда просто REPLACE INTO (userId, themeId, time) VALUES (1, 2, NOW());
Страниц: 1
Главная
WEB
PunBB Mod v0.6.2
0.014 s