Varchar,Char或Binary可以提高MySQL的性能

时间:2012-08-28 14:49:56

标签: mysql database database-design relational-database varchar

我正在使用MySQL而且我在某些地方阅读,在索引列中使用CHAR比使用VARCHAR快20%。在其他地方似乎只有在表没有任何VARCHAR列时才能获益。这是真的吗?

我想要存储的信息是GUID。如果数据库使用字符集utf8,更好的选项是将数据存储在BINARY还是CHAR中?每当我想通过GUID进行插入,更新或查询过滤时,我的数据是否值得转换为BINARY?我更喜欢比节省磁盘使用更快的数据访问。

1 个答案:

答案 0 :(得分:4)

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

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

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