SQL。计数在许多列上的性能

时间:2013-03-12 14:24:02

标签: mysql sql

我需要获取表中每列的不同值。所以,我想知道,如果使用像

这样的查询
select count(col1), count(col2),.., count(colN) from table;

将扫描整个表N次以获得所有这些计数?然后,最好使用具体DBMS必须通过循环表记录和递增数组元素来为每个列和计数值创建具有值的数组1..N的对象/过程吗?
我知道这完全依赖于DBMS实现,所以我想专门为MySQL知道它(但是关于其他流行系统的信息也很有趣)。

1 个答案:

答案 0 :(得分:2)

你需要这样做:

select count(distinct col1),
       count(distinct col2),
       ...
from   table;

并且数据库应该只进行一次全表扫描来计算它。