Вы можете просто использовать функцию MySQL COUNT()
для подсчета сообщений.Если вы используете соответствующие индексы, это очень быстро.(Если вы подсчитаете количество пользователей + ящиков, вы захотите иметь комбинированный индекс для пользователей + ящиков)
Обратите внимание, что MySQL также будет кэшировать результаты ваших запросов, так что новые сообщения не поступили[ваша таблица сообщений не изменилась] она даже не вернется к памяти / диску, чтобы выполнить фактический подсчет;он просто вернет последнее значение.Таким образом, очень дешевая операция.
Проблема с сохранением дополнительной избыточной информации заключается в том, что может быть очень трудно поддерживать ее в актуальном состоянии;Вы можете добавлять или удалять сообщения;некоторые пользователи могут перемещать сообщения между ящиками, и все это время вы должны держать счетчики правильными.Вам также придется начать использовать транзакции, чтобы убедиться, что INSERT сообщения и UPDATE счетчика либо выполнены, либо оба не выполнены (например, когда вы теряете связь или что-то падает).