我有一张1.6亿行的大表。我正在尝试准确计算唯一的电话号码。我得到以下结果:
select count(distinct `number`) from customers;
结果=约1.43亿行
select `number` from customers group by `number`;
结果=约430万行
当我在过去的其他较小的表上运行类似的计数(不同)和分组时,我在两者之间收到了相同数量的结果。
有关导致这种差异的原因的任何想法吗?
更新
我使用awk从csv中获取数字列。然后我在Linux中运行了这两个命令:
sort temp | uniq > temp_unique
wc -l temp_unique
结果(约430万)与上面的第二个选择陈述相同。
我删除了索引并重建了它,现在上面的第一个count语句返回了430万行,所以看起来我有一个损坏的索引。我很好奇为什么腐败指数会在计数中显示更多结果而不是更少。有什么想法吗? (我正在使用innodb btw。)