"modelarchives" ON ("models"."id" = "modelarchives"."model_id")
INNER JOIN "users" ON ("models"."user_id" = "users"."id")
WHERE (
"models"."deleted_at" IS NULL AND
"modelarchives"."id" IS NULL AND
"users"."plan_type" IN ('pro', 'prem', 'biz', 'ent')
)
Есть индекс по полю models.deleted_at но почему-то он не используется, а вместо него происходит Seq Scan на 2,5 миллиона строк 🤕
В чем тут проблема?
Таки надо смотреть, как создан индекс и план этого запроса. Возможно, и как созданы талицы. Навскидку, вместо индекса по deleted_at скорее подойдёт такой: CREATE INDEX ON models (user_id) WHERE deleted_at IS NULL
А ты скобки лишние утери, сразу станет индекс использоваться
У тебя условие на deleted at наверняка неселективное, очень много записей где это поле null
вот план: https://explain.depesz.com/s/pbO1 ¯\_(ツ)_/¯
Обсуждают сегодня