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