La cardinalidad en mysql es una estimación y mysql basa su estimación en las estadísticas de uso de la tabla:
Puede leer más sobre las estadísticas recopiladas para los motores de tablas myisam e innodb en la documentación de mysql e innodb y cómo configurarlas:
- Colección de estadísticas de índice InnoDB y MyISAM
- Optimizador de control Estimación de estadísticas
Todas las estadísticas se almacenan en la tabla de ESTADÍSTICAS dentro de information_schema.
Los índices, cuya cardinalidad estimada está más cerca de su cardinalidad exacta (número de valores distintos dentro del campo) se crearon hace más tiempo, por lo tanto, mysql recopiló más estadísticas para ellos y su estimación es más precisa. Si ejecuta analyse table
en esta tabla en particular, probablemente las cardinalidades de los índices duplicados estarán mucho más cerca entre sí que ahora.
La gran pregunta es, ¿por qué tienes índices duplicados?