我正在尝试在单个查询中获取所有列的不同计数。考虑下表。
COL1 | COL2 | COL3
A | 5 | C
B | 5 | C
C | 5 | C
C | 5 | C
D | 7 | C
预期结果
DC_COL1 | DC_COL2 | DC_COL3 #DC - Distinct count
4 | 2 | 1
尽管使用有效的分组函数无法在单个查询(单个全表扫描)中获得上述结果(AFAIK),但是在此可以进行哪些优化?
对每一列进行单个查询可能会导致对每一列进行全表扫描。尽管在对第一列进行非重复计数查询期间,整个表可能已经到达缓冲池,但是在大表上仍然是性能问题。
可以在单个表扫描中完成:
SELECT
COUNT(DISTINCT COL1) DC_COL1,
COUNT(DISTINCT COL2) DC_COL2,
COUNT(DISTINCT COL3) DC_COL3
FROM tablename