使用innodb,我有(int,date)
的索引。
当我对使用索引的查询运行解释时,我看到key_len
为9。
这对我没有意义。 int
需要4个字节。日期需要3个字节。这是7个字节的索引长度,为什么key_len
大于那个?
答案 0 :(得分:3)
您在评论中提到两列都可以为空(例如DEFAULT NULL
而不是NOT NULL
)。这是我向Google mysql key_len nullable
提出的最新消息,最终导致我storage requirements in MySQL。在那个页面上,Jake Drew发布了一个巨大的SQL语句,用于估计特定表中行的大小。与您的问题相关的部分是CASE WHEN IS_NULLABLE = 'YES' THEN 1 ELSE 0 END
。这意味着一个字节用于判断每个可空列是保持NULL
还是实际值。
因此,一列有4个字节,第二列有3个字节,第一列IS NULL
是1字节,第二列IS NULL
是1字节。这总共提供了9个字节。