Можно ли в одном запросе MySQL получить и счетчик, и результаты запроса?
В настоящее время я работаю над оптимизацией запроса к MySQL, и мне интересно, есть ли способ получить как количество результатов, так и сам набор результатов в одном запросе. Я знаю, что этого можно добиться с помощью отдельных запросов, один для подсчета, другой для получения результатов, но мне интересно, есть ли более эффективный способ сделать это в рамках одного запроса.
Да, вы можете использовать подзапрос в SELECT :
Select *, (SELECT COUNT(id) FROM city) as total FROM city;
И вот результат :
введите описание изображения здесь
или в случае с join вы можете использовать этот метод :
SELECT COUNT(*),id,type_id FROM
(
SELECT proprety.id,type.id as type_id
FROM
proprety LEFT JOIN type
ON proprety.type_id=type.id
) as t1;
и вот результат :
Сделайте это в другом порядке.
Вместо того чтобы считать размер QuerySet, затем получить его, следует получить его, а затем определить длину.
Вы можете преобразовать QuerySet в список. Это позволяет получить запрос.
queryset_list = list(queryset)
Тогда len()
в этом списке можно найти без запроса к базе данных.