Для начала приведу пример:
# Student is a model class, and it has attributes: name, age, gender and so on.
temp_students = Student.objects.filter(age=18)
students = temp_students.filter(gender='girl')
Если я отлаживаю этот код, я могу получить SQL, который может быть "SELECT * FROM student WHERE age = 18"
(называемый SQL-A).Затем, когда я достигну второй строки, я могу получить другой SQL, который "SELECT * FROM student WHERE gender = 'girl' IN (SELECT * FROM student WHERE age = 18)"
(называемый SQL-B).
Итак, мой ВОПРОС - когда исполняются SQL-A и SQL-B?Он подключается к базе данных дважды и получает два набора результатов?В этом случае есть ли ненужные расходы на базу данных?Если нет, то почему я могу получить SQL-код, похожий на режим отладки?
Будет здорово, если в конце вашего ответа есть какой-нибудь связанный документ или статья по Django ORM.
СПАСИБО!