Невозможно объединить два подсчета для двух разных таблиц в один запрос, если вы не используете UNION
. Который запустит два отдельных запроса и объединит результаты. Это займет примерно столько же времени, сколько и два запроса по отдельности, за исключением того, что вы заходите на db-сервер только один раз (1 запрос), но вы теряете удобочитаемость. Имхо, мне действительно интересно, стоит ли это того.
например. в одном случае вы можете написать
if posts.count == users.count
В другом случае можно написать:
count_sql = <<-SQL
select "Posts" as count_type, count(*) from posts where ...
union
select "Users" as count_type, count(*) from users where ...
SQL
result = Post.connection.execute(count_sql)
if result[0]["count"] == result[1]["count"]
Вам придется решить, будут ли улучшения производительности приводить к потере читабельности.