Cardinality值:
统计表中字段的高选择性:
类似于姓名字段,表中都不相同的,属于高选择性,适用于添加索引
类似于性别字段,只有男,女的,属于低选择性,则不适用于添加索引
show index from table;
InnoDB中更新Cardinality值的策略:
表中1/16发生过变化
表中某一行记录频繁更新,表中却没有记录的添加时,更新次数>2 000 000 000次
Cardinality值的统计:采样的方法
取得B+树索引中叶子节点的数量,记为A
随机取得B+树索引中的8个叶子节点,统计每个页不同记录的个数,即为:p1,p2~~~p8
Cardinality = (p1 + p2 + p3.......+ p8) * A/8
show index from table;
次sql语句会触发mysql对Cardinality值的统计