所以我在列卡上有一个带索引的表
当我跑步时
SELECT COUNT(DISTINCT(card)) FROM table
它返回490个不同的条目
然而,当我跑
时SHOW INDEXES FROM s_edge_type_group_join;
它表明列card
上索引卡的基数只有1.该索引只有该列
为什么会这样?为什么不是指数的基数反映了数据的多样性?
答案 0 :(得分:1)
SHOW INDEX
返回的基数是估计值,主要由优化程序用于构建查询执行计划:
http://dev.mysql.com/doc/refman/5.0/en/show-index.html
基数
索引中唯一值数量的估计值。这是 通过运行ANALYZE TABLE或myisamchk -a进行更新。基数是 根据存储为整数的统计信息计算,因此值不是 即使对于小桌子也必须精确基数越高, MySQL在进行连接时使用索引的可能性越大。
根据您填充表格的方式,这些值可能已过时。并且,为了解释文档,在这种情况下,您应该使用ANALYZE TABLE
来更新这些统计信息。