我正在使用 MySQL,并且在某些地方读到在索引列中使用 CHAR
比使用 VARCHAR
快 20%。在其他地方,似乎只有当表没有任何 VARCHAR
列时它才具有好处。这是真的吗?
我想要存储的信息是 GUID。如果数据库使用字符集 utf8,将数据存储在 BINARY
中还是 CHAR
中是更好的选择吗?每次我想要通过 GUID 进行插入、更新或查询过滤时,是否值得将我的数据转换为 BINARY?我更喜欢更快的数据访问而不是节省磁盘使用量。
最佳答案
与可变宽度类型相比,任何固定宽度列类型都有助于更快的查找操作。除非您的表已分区,否则即使在不涉及可变宽度类型的操作上,可变宽度类型也会降低性能。为了考虑,请仔细考虑一下当所有列都是固定宽度时以及当某些列不是固定宽度时如何迭代列中的所有值的算法:
对于全固定宽度的表(或分区),您可以使用简单的指针算术,每次循环时添加分区中所有列的组合数据宽度值。
但是,如果存在任何可变宽度列,则需要根据列的实际磁盘“宽度”计算每次迭代添加到指针的量。
关于mysql - 用于提高 MySQL 性能的 Varchar、Char 或 Binary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12161933/