列索引的mysql基数大于该列中的唯一值

列索引的mysql基数大于该列中的唯一值,mysql,indexing,cardinality,Mysql,Indexing,Cardinality,我正在使用MySQL 5.6。有一个MYISAM表,有一百万行。此表中的“county”列上有一个BTREE索引,该列只有61个可能的值。当我在此表上运行“ShowIndexinTable”时,它报告“county”列上的索引基数为117554 我希望列索引的基数反映列中唯一值的数量。在这种情况下,数字是非常不同的——这是否表明存在某种问题,比如索引损坏 我已经运行了“optimize table”,它不会更改此索引的基数。有关索引的MySql文档说明: 基数 索引中唯一值数量的估计值。更新 此

我正在使用MySQL 5.6。有一个MYISAM表,有一百万行。此表中的“county”列上有一个BTREE索引,该列只有61个可能的值。当我在此表上运行“ShowIndexinTable”时,它报告“county”列上的索引基数为117554

我希望列索引的基数反映列中唯一值的数量。在这种情况下,数字是非常不同的——这是否表明存在某种问题,比如索引损坏


我已经运行了“optimize table”,它不会更改此索引的基数。

有关索引的MySql文档说明:

基数

索引中唯一值数量的估计值。更新 此数字,请运行ANALYZE TABLE或(对于MyISAM表)myisamchk-a

基数是基于存储为整数的统计数据计算的,因此 即使对于小表,值也不一定精确。越高 基数越大,MySQL在 做连接

大胆的强调是我的。计算索引的基数需要花费大量时间,包括服务器内存可用性和磁盘空间

我不会关注基数计算是否正确,特别是因为您已经运行了
optimizetable
命令。相反,通过对查询运行explain plan来检查以确保您的查询正在使用索引