Мне нужно обработать прочитанное / непрочитанное состояние сообщения для пользователя.
Напишите сейчас, я использую денормализованный столбец для хранения разделенных запятыми user_ids. Поскольку это текстовый столбец, производительность запроса на выборку ухудшается.
Теперь я хотел бы назначить константу для всех пользователей, которые говорят
Пользователь A - 1, Пользователь B-2, Пользователь C-4 и Пользователь D-8 (побитовый) и сохраняют свою комбинацию в целочисленном столбце. Поэтому, когда пользователь A, C прочитает значение для целочисленного столбца будет (1 +4) 5.
И используйте побитовый оператор в критериях для запроса прочитанного / непрочитанного сообщения. Проблема в том, нет. количество пользователей, которые я могу хранить как комбинацию, ограничено, скажем, 62 статусом пользователя в столбце. Если мне нужно расширить, я мог бы добавить еще один столбец BIGINT для хранения других пользователей.
Что может быть лучшим способом хранения этой информации.
Ниже приведены действия, которые мне нужно сделать.
- когда публикуется новый ответ, я должен обновить значение до 0 (чтобы сделать непрочитанным для каждого).
- Обновлять статус в столбце, когда пользователь читает сообщение.
- Выбрать все непрочитанные сообщения для пользователя.
EDIT:
Я пытался обратиться к 3-му действию косвенно. я добавляю этот целочисленный столбец в список выбранных столбцов и нахожу статус чтения для пользователя в коде приложения вместо добавления в качестве критерия mysql. В любом случае это не решение проблемы. Мне все еще нужен хороший.