Внешний ключ без индекса
Внешний ключ без индекса
Карточка члена экипажа показывает его вахты. Открывается медленно у всех, хотя вахт у человека — десятки.
crew_id — внешний ключ на ls_crew. PostgreSQL создаёт индекс под ПЕРВИЧНЫЙ ключ, но под внешний — никогда: связь объявлена, а дороги по ней нет. Двести тысяч вахт читаются целиком ради сорока строк.
Постройте недостающую дорогу — и заодно избавьте план от сортировки.
Ускорьте этот запрос индексом
SELECT shift_id, duty_day, deck, hours FROM ls_shifts WHERE crew_id = 4242 ORDER BY duty_day
Только CREATE/ALTER/DROP — SELECT в конце не нужен.
Что считается решением
Менять можно только схему: индексы и ANALYZE. Запрос из условия остаётся как есть — присылать его не нужно.
- в плане нет Seq Scan по ls_shifts
- запрос читает не больше 134 страниц по 8 КБ
Проверка идёт на данных крупнее тех, что вы видите в примерах, — ответ должен держаться на объёме.
Войдите, чтобы видеть историю отправок
ВойтиВойдите, чтобы использовать AI Mentor
ВойтиФокус-радио
На паузе · SomaFM · Fluid