获取单个MySQL查询中所有列的不同计数
我试图在一个查询中获取所有列的不同计数。考虑下表。获取单个MySQL查询中所有列的不同计数,mysql,count,distinct,mysql-8.0,Mysql,Count,Distinct,Mysql 8.0,我试图在一个查询中获取所有列的不同计数。考虑下表。 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 虽然使用有效的group by函数无法在单个查询(单个完整表扫描)中实现上述结果(AF
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
虽然使用有效的group by函数无法在单个查询(单个完整表扫描)中实现上述结果(AFAIK),但这里可以进行哪些优化
对每一列触发单独的查询可能会导致对每一列进行完整的表扫描。虽然在第一列的distinct count查询过程中,整个表可能已到达缓冲池,但在大型表上,这仍然是一个性能问题。可以在单个表扫描中完成:
SELECT
COUNT(DISTINCT COL1) DC_COL1,
COUNT(DISTINCT COL2) DC_COL2,
COUNT(DISTINCT COL3) DC_COL3
FROM tablename