Берем в пример ВКонтакте, когда пользователь берет и удаляет несколько своих сообщений в диалоге с кем-либо, какой у них проходит SQL запрос? (Даже не сам ВК, а в высоконагруженных проектах как это лучше делать)?
DELETE FROM messages WHERE id = ?
или
UPDATE messages SET status = 'deleted' WHERE id = ?
Первый вариант может быть плох (как я думаю), скорее всего, потому что если сообщение удалится с таблицы, то те сообщения которые сверху от него, придется их опускать вниз, что может быть затратно по времени? Как такое делается в хайлоад проектах?
Хотя мне кажется у вк не происходит DELETE FROM т.к. у собеседника мои сообщения остаются, а удаляются только у меня. И где о такой теме лучше стоит почитать?
P.S. Правильно ли я понимаю, что таблица выглядит примерно таким образом у того же вк?
id | sender | receiver | message | status
33 | 1231 | 992123 | 'Привет' | delete_by_sender
Где значения sender, receiver - айдишники страниц