База данных сможет оптимизировать счет лучше, если все, что вам нужно, это подсчет результата запроса и вам не нужен набор результатов.В этом случае, если вы выполните подсчет в python, базе данных придется сериализовать набор результатов, а python придется десериализовать его, что приводит к большому количеству ненужных циклов трафика и вычислений.
Однако, если вына самом деле нужен также набор результатов, тогда выполнение двух запросов (один для получения результата и один для подсчета), скорее всего, будет медленнее, чем просто выполнение одного запроса и подсчет на python, особенно если запрос медленный /сложный, и база данных не может выполнить подсчет индекса, поскольку база данных может фактически проходить через данные дважды.Кроме того, в зависимости от уровня изоляции транзакции выполнение двух запросов может фактически дать вам различное количество в двух запросах, если вы находитесь на уровне изоляции транзакции, который позволяет фантомное чтение, поскольку между двумя запросами могут быть добавлены / удалены строки.
В конечном счете, если вы обеспокоены этим, вам следует сравнить свои операции.