Давайте проверю планы выполнения этих запросов в Meta.
Запросы в Meta выполняются довольно быстро, но я понимаю, как они могут работать медленно на слабых базах данных. Мы используем ActiveRecord, и код довольно чистый, но сгенерированный SQL-код получается довольно запутанным.
Если писать SQL вручную, мы можем заставить запрос использовать существующие индексы и значительно оптимизировать его:
До
После
В оптимизированном запросе мы получаем только сообщения пользователя, ограничивая цикл сообщений, чтобы соединение происходило не слишком поздно.
Поэтому я считаю, что мы можем добиться лучшей производительности без добавления накладных расходов на индексы.

