在 MySQL 5.1 InnoDB 中,VARCHAR 的最大长度是否影响二级索引大小?

在 MySQL 5.1 InnoDB 中,VARCHAR 的最大长度是否影响二级索引大小?

假设数据无论如何都相同,VARCHAR 的最大长度是否会影响二级索引的空间使用率?InnoDB 是否对索引使用固定长度记录?

假设我们正在讨论 MySQL 5.1,具有 InnoDB COMPRESSED 表格式,并且所讨论的字段定义为 VARCHAR,其长度小于或等于 255(因此它仅使用一个字节作为偏移量)。

以下是用例:

我有一台服务器,里面有一个非常大的表(几 GB)。其中一个字段目前是 VARCHAR(7)。我们需要它更长一点,我们正在考虑将其改为 VARCHAR(255),但我们担心它会使索引膨胀。

答案1

不,innodb 在二级索引中使用时不会完全扩展 varchar 字段。

几年前,Yves Trudeau 发表了一篇很好的博客文章,通过使用 innodb 恢复工具深入研究 innodb 页面明确证明了这一点:http://www.bigdbahead.com/?p=150

相关内容