好吧,也许我太老了,我想了解以下内容。为什么一个工会比一个组的速度快
查询1
select count(*), gender from customer
group by gender
查询2.
select count(*), 'M' from customer
where gender ='M'
union
select count(*), 'F' from customer
where gender ='F'
第一查询是简单的,但由于某些原因的探查,当我在同一时间执行两个,它说,查询2使用39%的时间,查询1,61%。
我想了解原因,也许我必须重写所有的查询。
只是一个猜测:第二个查询实际上有没有聚集,没有状态保持以计算计数(它只是返回匹配的行数'COUNT(*)') – lanzz
你是什么意思'在同一时间? – Sebas
我想你只有2个性别和每个人都有分配,而不是一些被'NULL'性别?另外如果你尝试'联盟所有'?这会进一步提高第二个吗?还有什么RDBMS和执行计划是什么样的?在SQL Server执行计划中,相对成本也不一定反映真实的性能,如果这是您用来比较这两个查询。 –