低mysql索引基数但数据多样化

时间:2013-08-15 22:11:39

标签: mysql sql indexing cardinality

所以我在列卡上有一个带索引的表

当我跑步时

SELECT COUNT(DISTINCT(card)) FROM table

它返回490个不同的条目

然而,当我跑

SHOW INDEXES FROM s_edge_type_group_join;

它表明列card上索引卡的基数只有1.该索引只有该列

为什么会这样?为什么不是指数的基数反映了数据的多样性?

1 个答案:

答案 0 :(得分:1)

SHOW INDEX返回的

基数估计值,主要由优化程序用于构建查询执行计划:

http://dev.mysql.com/doc/refman/5.0/en/show-index.html

  

基数

     

索引中唯一值数量的估计值。这是   通过运行ANALYZE TABLE或myisamchk -a进行更新。基数是   根据存储为整数的统计信息计算,因此值不是   即使对于小桌子也必须精确基数越高,   MySQL在进行连接时使用索引的可能性越大。

根据您填充表格的方式,这些值可能已过时。并且,为了解释文档,在这种情况下,您应该使用ANALYZE TABLE来更新这些统计信息。