对于mysql中的重复索引,基数可以不同吗?

时间:2016-01-18 09:50:18

标签: mysql database indexing cardinality

我有一个具有重复索引的表(同一列被索引两次( BTREE ))但令人惊讶的是基数不同。为什么会这样。

do
{
   //code
}while(condition);

1 个答案:

答案 0 :(得分:3)

mysql中的基数是estimate,mysql根据表使用统计数据建立其估计值:

  

基数

     

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

您可以在mysql和innodb的文档中阅读更多关于myisam和innodb表引擎收集的统计信息,以及如何配置这些:

所有统计信息都存储在information_schema中的STATISTICS table

索引,那些估计的基数更接近它们的确切基数(字段内的不同值的数量)是在很久以前创建的,因此mysql为它们收集了更多的统计数据,并且它的估计更准确。如果你在这个特定的表上运行analyse table,那么重复索引的基数可能会比现在更接近彼此。

最大的问题是,为什么你有重复索引呢?