简单的查询优化

nts*_*sue 1 sql database count query-optimization

嘿伙计们,如果这个问题太简单,请原谅我.我基本上想要计算数据库中男性和女性的数量.所以我知道两个简单的查询将实现这一点,例如:

select count(*) from table where gender='male'
select count(*) from table where gender='female'
Run Code Online (Sandbox Code Playgroud)

但是,这似乎非常低效,因为我知道下面的查询都是相同的查询:

select count(*) from table where gender='female'
select count(*) from table where gender<>'male'
Run Code Online (Sandbox Code Playgroud)

是否有最佳方法来检索此信息,而无需两次遍历数据库中的每一行?

dot*_*iel 9

您还可以使用GROUP BY:

SELECT gender, Count(1) as genderCount
FROM   table
GROUP BY gender
Run Code Online (Sandbox Code Playgroud)

这将导致类似这样的事情:

gender       genderCount

Male         10

Female       15
Run Code Online (Sandbox Code Playgroud)


Red*_*ter 5

select sum(case when gender='male' then 1 end) as MaleCount,
    sum(case when gender='female' then 1 end) as FemaleCount
from table
Run Code Online (Sandbox Code Playgroud)