3,6 млн записей, есть индекс по трем полям. Выборка из этой таблицы с условием по этим трем полям использует индекс. EXPLAIN ожидает три записи в выборке, по факту имеем одну.
Берем и присоединяем к этой таблице другую (очень большую) по первому полю одного из её индексов. И теперь постгрес из первой таблицы достает данные Parallel Seq Scan.
А потом уже делает для трех воркеров Nested Loop.
Почему так? WTF?
Так это... запрос давайте и план (плохого поведения). Если в запросе дофига всего — выкиньте лишнее, чтобы остался минимум, на котором проблема воспроизводится
Возможно составной индекс криво создан
А запрос-то покажешь?
Думаю, тут дело всё в параллельном исполнении запросов. Надо его отключать как-то.
мне так кажется, что параллельное исполнение - это уже после того, как субд решила делать именно так, а не иначе (скан хипа вместо индекс скана)
Нет, это всегда вместе. Хотя фиг знает конечно... Ты сказал, что в "маленьком" запросе три записи ожидается, а выбирается одна. А сколько записей в запросе, если ты добавляешь JOIN ?
Мда...
Обсуждают сегодня