Можно ли в одном запросе 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;

и вот результат :

enter image description here

Сделайте это в другом порядке.

Вместо того чтобы считать размер QuerySet, затем получить его, следует получить его, а затем определить длину.

Вы можете преобразовать QuerySet в список. Это позволяет получить запрос.

queryset_list = list(queryset)

Тогда len() в этом списке можно найти без запроса к базе данных.

Вернуться на верх