Или же если можно менять базу, можешь сделать таблицу с комбинированным ключем conversationId + userId по которому будет всегда лежать последнее сообщение юзера в беседе
Иначе каждый раз групбай делать + джойны или подзапросы это будет долго
Я думаю не стоит, так как запрос на получение последних сообщений по разговорам будет происходить только при старте клиента. При запросе всех разговоров