У вас есть две проблемы:
Оценки по conversations
крайне неверны:
ANALYZE conversations;
Вы должны проиндексировать условие выборочного полнотекстового поиска:
CREATE INDEX ON messages USING gin (tsv_message_content);
Если ANALYZE
(даже с поднятым default_statistics_target
) не улучшает неправильную оценку, это, вероятно, вызвано корреляцией между столбцами.
Попробуйте расширенную статистику, чтобы улучшить это:
CREATE STATISTICS conversations_stats (dependencies)
ON project_id, deleted, status FROM conversations;
Последующее ANALYZE
должно улучшить оценку.