我有一个具有重复索引的表(同一列被索引两次( BTREE ))但令人惊讶的是基数不同。为什么会这样。
do
{
//code
}while(condition);
答案 0 :(得分:3)
mysql中的基数是estimate,mysql根据表使用统计数据建立其估计值:
基数
索引中唯一值数量的估计值。这是 通过运行ANALYZE TABLE或myisamchk -a进行更新。基数是 根据存储为整数的统计信息计算,因此值不是 即使对于小桌子也必须精确基数越高, MySQL在进行连接时使用索引的可能性越大。
您可以在mysql和innodb的文档中阅读更多关于myisam和innodb表引擎收集的统计信息,以及如何配置这些:
所有统计信息都存储在information_schema中的STATISTICS table。
索引,那些估计的基数更接近它们的确切基数(字段内的不同值的数量)是在很久以前创建的,因此mysql为它们收集了更多的统计数据,并且它的估计更准确。如果你在这个特定的表上运行analyse table
,那么重复索引的基数可能会比现在更接近彼此。
最大的问题是,为什么你有重复索引呢?