У меня есть интересная проблема: я хочу установить конкретное ограничение на количество предложений, которые может разместить пользователь. Предложения сохраняются в базе данных postgresql (версия 10) и не должны превышать 1000.
Я использую следующий запрос sql, чтобы проверить, сколько предложений есть у пользователя, и проверить его на предмет ограничения:
select count(*) from offers where offers.userId = 'b27e1d2f-c2c1-4d0b-8451-287013d7b716';
В показателях производительности я вижу, что большая часть времени уходит на этот запрос. Поэтому я посмотрел его и обнаружил следующее: https://wiki.postgresql.org/wiki/Slow_Counting
PostgreSQL все равно нужно будет прочитать полученные строки, чтобы убедиться, что они существуют;
В планировщике запросов этоМожно заметить, что в дополнение к просмотру индекса требуется только выборки кучи , что, как я полагаю, замедляет весь запрос:
Index Only Scan using offers_by_user_id_index on offers
Index Cond: (account_id = 'b27e1d2f-c2c1-4d0b-8451-287013d7b716'::uuid) | Heap Fetches: 650
- Какие способы ускорить это?
Является ли отслеживание количества строк хорошим подходом для ускорения проверки?
Спасибо за вашу помощь!
Редактировать: UserId - это UUID и индекссуществует в столбце UUID