为什么key_len大于索引长度?

时间:2015-01-07 21:54:27

标签: mysql sql

使用innodb,我有(int,date)的索引。

当我对使用索引的查询运行解释时,我看到key_len为9。

这对我没有意义。 int需要4个字节。日期需要3个字节。这是7个字节的索引长度,为什么key_len大于那个?

1 个答案:

答案 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个字节。