После ANALYZE запрос стал медленнее. Это не всегда ошибка статистики
После ANALYZE запрос стал медленнее. Это не всегда ошибка статистики Сценарий: SQL тот же. Запрос раньше работал нормально. После ANALYZE появился другой план. И время выполнения выросло. Почему? ANALYZE обновляет статистику для планировщика PostgreSQL. Но новая статистика не гарантирует лучший план. Планировщик может выбрать другой путь выполнения, потому что изменились его оценки. Проверяйте не только сам план. Используйте: EXPLAIN ANALYZE BUFFERS Сравните: — старый план; — новый план; — оценочное количество строк; — фактическое количество строк; — прочитанные блоки. Если PostgreSQL ожидал мало строк, а получил значительно больше — нужно проверить качество оценки. Типичная ошибка: сразу менять индексы. Сначала разберитесь: — почему выбран другой путь; — насколько точны оценки; — что изменилось в данных и статистике. Вывод: ANALYZE помогает планировщику принимать решения, но не гарантирует лучший план. При изменении поведения запроса сначала анализируйте оценки и фактическое выполнение. Сохраните сценарий анализа изменения плана PostgreSQL. На курсах по PostgreSQL такие случаи разбираются через статистику, планировщик и EXPLAIN ANALYZE. #PostgreSQL #SQL #DBA #БазыДанных #ОптимизацияSQL #УЦФОРС