我正在使用MySQL 5.6。有一个具有100万行的MYISAM表。该表中的“县”列上有一个BTREE索引,该列只有61个可能的值。当我在此表上运行“在表中显示索引”时,它报告“县”列的索引基数为117554。
我期望列索引的基数能够反映列中唯一值的数量。在这种情况下,数字有很大的不同-是指示某种问题,例如索引损坏吗?
我已经运行了“优化表”,它并没有改变该索引的基数。
答案 0 :(得分:0)
有关索引的MySql文档指出:
基数
索引中唯一值数量的估计。更新 此数字,运行ANALYZE TABLE或(对于MyISAM表)运行myisamchk -a。
基数是根据存储为整数的统计数据计算的,因此 值即使对于小桌子也不一定准确。越高 基数,MySQL在以下情况下使用索引的机会越大 做联接。
大胆的强调是我的。计算索引的基数很多,包括服务器内存可用性和磁盘空间。
我不会把重点放在基数计算不正确上,尤其是因为您已经运行了print(tabulate([training_step, train_accuracy, test_accuracy], headers=['Step', 'Train_accuracy', 'Test_accuracy']))
命令。相反,请对查询运行解释计划,以确保您的查询正在使用索引。