Cardinalidade no mysql é uma estimativa , e o mysql baseia sua estimativa nas estatísticas de uso da tabela:
Você pode ler mais sobre as estatísticas coletadas para os mecanismos de tabela myisam e innodb na documentação do mysql e innodb e como configurá-los:
- Coleção de estatísticas de índice InnoDB e MyISAM
- Controlando o otimizador Estimativa de estatísticas
Todas as estatísticas são armazenadas na tabela STATISTICS dentro de information_schema.
Os índices, cuja cardinalidade estimada está mais próxima de sua cardinalidade exata (número de valores distintos dentro do campo) foram criados há mais tempo, portanto o mysql coletou mais estatísticas para eles e sua estimativa é mais precisa. Se você executar
analyse table
nesta tabela em particular, provavelmente as cardinalidades dos índices duplicados estarão muito mais próximas umas das outras, do que agora. A grande questão é:por que você tem índices duplicados?