Кроме того, если это не то место, я перенесу его в переполнение стека.Я разместил это здесь, так как, когда у меня там был вопрос о mysql, они сказали, что именно здесь следует задавать такие вопросы.
Проблема, с которой я столкнулся, связана с моей системой чата.У меня есть обычная таблица чата, а затем я также на что используется для личных сообщений.Таким образом, таблица чата с личными сообщениями содержит только идентификатор сообщения, который был закрытым, а также лицо, которое должно было его получить.
схема таблицы выглядит примерно так:
chat(
id int unsigned not null,
sayer_id int unsigned not null,
message_type tinyint unsigned not null,
message varchar(150) not null,
timesent timestamp on update current_timestamp,
);
индексы на id и timesent.Основным является id, а также нормальный индекс на timesent.Вторая таблица просто.
chat_private(
message_id int unsigned not null,
target_id int unsigned not null
)
, первичная находится на идентификаторе сообщения и также является внешним ключом.У целевого идентификатора в данный момент нет ни одного, но я могу добавить к нему обычный индекс.
Теперь запрос, который я пытаюсь сделать, выглядит примерно так: SELECT message, timesent FROM chat WHERE timesent>=last_update AND target_id=$userid;
last_update - переменная сеансауказав, когда в последний раз были выполнены обновления.$ userid - это идентификатор переменной сеанса на стороне сервера.Также я не знаю, как легко сделать что-то похожее на это, так как я хочу получить соединение из таблицы chat_private, но я также не хочу иметь дело со всеми идентификаторами из него, так как он содержит толькоtarget_id / message_id и, следовательно, будет довольно бессмысленным.
Какой самый простой способ работать с данными как есть?Если с ним невозможно работать, тогда я просто перенесу приватный чат и другие последующие в их собственную таблицу и соответствующим образом скорректирую размеры данных.