1

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

当我跑

SELECT COUNT(DISTINCT(card)) FROM table

它返回 490 个不同的条目

但是,当我跑步时

SHOW INDEXES FROM s_edge_type_group_join;

它揭示了该列上索引卡的基数card仅为1。该索引仅包含该列

为什么会这样?为什么索引的基数不能反映数据的多样性?

4

1 回答 1

1

返回的基数SHOW INDEX是一个估计值,主要由优化器用于构建查询执行计划:

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

基数

对索引中唯一值数量的估计。这是通过运行 ANALYZE TABLE 或 myisamchk -a 来更新的。基数是根据存储为整数的统计信息计算的,因此即使对于小型表,该值也不一定准确。基数越高,MySQL 在进行连接时使用索引的机会就越大。

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

于 2013-08-15T22:14:43.597 回答