SQL-запрос внезапно стал медленным? Проверь не только индексы, но и статистику

Оптимизатор выбирает план запроса на основе статистики по данным. Если она устарела, база может решить, что строк мало, выбрать Nested Loop и в итоге прогнать миллионы сравнений.

В PostgreSQL быстро обновить статистику можно так:


ANALYZE users;


А проверить, насколько оценки оптимизатора отличаются от реальности:


EXPLAIN (ANALYZE, BUFFERS)
SELECT *
FROM users
WHERE status = 'active';


Смотри на разницу между rows= и actual rows=.

Если PostgreSQL ожидал 100 строк, а реально получил 500 000, проблема может быть не в индексе, а в плохой статистике.

Особенно часто это всплывает после массовых INSERT, UPDATE, импорта данных или резкого изменения распределения значений.
Просмотры: 281
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти