0

我需要获取表中每一列的不同值的数量。所以,我想知道,如果使用像这样的查询

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

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

4

1 回答 1

2

你需要做:

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

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

于 2013-03-12T14:35:25.030 回答