我正在运行命令:
显示索引自 atpco_fare
. atpco_r1_fare_cls
;
结果在表中
Table, Non_unique, Key_name, Seq_in_index, Column_name, Collation, Cardinality, Sub_part, Packed, Null, Index_type, Comment, Index_comment, Visible
atpco_r1_fare_cls 0 PRIMARY 1 tar_nbr A 7707 BTREE YES
atpco_r1_fare_cls 0 PRIMARY 2 carr_cd A 46531 BTREE YES
atpco_r1_fare_cls 0 PRIMARY 3 rule_nbr A 426326 BTREE YES
atpco_r1_fare_cls 0 PRIMARY 4 fare_cls A 30087162 BTREE YES
atpco_r1_fare_cls 0 PRIMARY 5 seq_nbr A 21610918 BTREE YES
atpco_r1_fare_cls 0 PRIMARY 6 mcn A 31260526 BTREE YES
atpco_r1_fare_cls 0 PRIMARY 7 eff_date A 31260526 BTREE YES
atpco_r1_fare_cls 0 PRIMARY 8 proc_ind A 31260526 BTREE YES
我不理解组合主键的基数,因为它没有充分表明随着序列的增加,它应该更独特而不是更少。至少,基于我对指数的理解,它不应该少。
第一个问题是为什么序列号的基数较小。它说明了什么?
第二,为什么后三个具有相同的基数?它说明了什么?
1条答案
按热度按时间jmp7cifd1#
基数是一个近似值。
多列索引中的基数几乎不重要。
这8列中的某些子集是“唯一的”吗?如果是这样,你应该缩短pk。
列的数据类型是什么(请提供
SHOW CREATE TABLE
.)表中有大约3100万行吗?如果是这样的话,那么估计表明该指数已经是“唯一的”(这个猜测可能是错误的。)
什么版本的mysql(在过去的几个主要版本中,获取统计数据的方法发生了变化。)
请解释一下你对基数的期望。