Почему добавление `only()` к моему набору запросов приводит к N+1?
У меня есть набор запросов Django под названием qs
. Когда я оцениваю его, он выполняет следующий SQL-запрос:
SELECT "projects_issue"."id", "projects_issue"."name", "projects_issue"."milestone_id" FROM "projects_issue" WHERE "projects_issue"."milestone_id" = 1 ORDER BY "projects_issue"."name" ASC LIMIT 21
Теперь я хочу выбрать только поле id
, поэтому я оцениваю qs.only("id")
. При этом выполняется более одного запроса:
SELECT "projects_issue"."id" FROM "projects_issue" WHERE "projects_issue"."milestone_id" = 1 ORDER BY "projects_issue"."name" ASC LIMIT 21
SELECT "projects_issue"."id", "projects_issue"."milestone_id" FROM "projects_issue" WHERE "projects_issue"."id" = 1 LIMIT 21
SELECT "projects_issue"."id", "projects_issue"."milestone_id" FROM "projects_issue" WHERE "projects_issue"."id" = 2 LIMIT 21
Дополнительные запросы - это N+1, выполняющий запрос для каждого возвращаемого элемента в наборе запросов. У меня не зарегистрировано никаких сигналов Django. Что может быть причиной этих дополнительных запросов? Есть ли что-нибудь, что я могу найти в наборе запросов, чтобы проанализировать его и лучше понять такое поведение?