Varchar、Char 或 Binary 以提高 MySQL 性能

1 mysql database varchar database-design relational-database

我正在使用 MySQL 并且我在某些地方读到CHAR在索引列中使用比使用快 20% VARCHAR。在其他地方似乎只有当表没有任何VARCHAR列时才有好处。真的吗?

我想要存储的信息是一个 GUID。如果数据库使用字符集 utf8 BINARY,是将数据存储在 a 中还是a 中更好CHARBINARY每次我想通过 GUID 插入、更新或查询过滤时,是否值得将我的数据转换为?与节省磁盘使用量相比,我更喜欢更快的数据访问。

Chr*_*hey 5

与可变宽度类型相比,任何固定宽度的列类型都有助于更快的查找操作。除非您的表已分区,否则即使在不涉及它们的操作上,可变宽度类型也会降低性能。作为考虑,请仔细考虑当所有列都是固定宽度时如何迭代列中的所有值的算法,然后当有些不是时:

对于全固定宽度的表(或分区),您可以使用简单的指针算法,每次通过循环将分区中所有列的组合数据宽度的值相加。

但是,如果有任何可变宽度的列,则需要根据列的实际磁盘“宽度”计算每次迭代添加到指针的数量。