Существует несколько дискуссий о системах обмена сообщениями, но в основном они связаны со структурой электронной почты. Как может быть самый эффективный способ обмена сообщениями участников в нормализованной базе данных?
Я думаю о создании таблицы сообщений с пятью столбцами:
ID (PRIMARY KEY)
First_Person (FK user_id)
Second_Person (FK user_id)
Message
date
Меня беспокоит чтение этой большой таблицы.
поиск всего сообщения для человека (например, user_id 876)
SELECT * FROM messages WHERE First_Person='876' OR Second_Person='876'
и связь между двумя людьми
SELECT * FROM messages WHERE (First_Person='876' OR Second_Person='876')
AND (First_Person='1500' OR Second_Person='1500') ORDER DESC BY date
Поскольку этот вид сообщений подобен чату, для тысяч участников эта таблица может увеличиваться до миллиардов строк (а не миллионов). Тогда эффективен ли поиск сообщений в такой большой таблице?