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

2ekbmq32  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(431)

我正在使用MySQL5.6。有一个有一百万行的myisam表。此表中的“county”列上有一个btree索引,该列只有61个可能值。当我在此表上运行“show index in table”时,它报告“county”列上索引的基数是117554。
我希望列索引的基数反映列中唯一值的数量。在这种情况下,数字是非常不同的——这是不是表示某种问题,比如索引损坏?
我已经运行了'optimize table',它不会改变这个索引的基数。

nwsw7zdq

nwsw7zdq1#

有关索引的mysql文档说明:
基数
对索引中唯一值的数量的估计。要更新此数字,请运行analyze table或(对于myisam表)myisamchk-a。
基数是基于存储为整数的统计信息来计算的,因此即使对于小表,该值也不一定精确。基数越高,mysql在执行连接时使用索引的可能性就越大。
大胆的强调是我的。在计算索引的基数(包括服务器内存可用性和磁盘空间)方面需要做大量工作。
我不会把重点放在基数计算不正确上,特别是因为您已经运行了 optimize table 命令。相反,通过对查询运行explain计划来检查以确保您的查询正在利用索引。

相关问题