Varchar、Char或Binary来提高MySQL性能



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

我要存储的信息是GUID。如果数据库使用字符集utf8,将数据存储在BINARY还是CHAR中是更好的选择?每次我想插入、更新或按GUID查询筛选时,都值得将我的数据转换为BINARY吗?比起节省磁盘使用量,我更喜欢更快的数据访问。

与可变宽度类型相比,任何固定宽度的列类型都有助于更快的查找操作。除非对表进行分区,否则可变宽度类型也确实会降低性能,即使在不涉及它们的操作中也是如此。考虑到这一点,考虑一下当所有列都是固定宽度时,以及当一些列不是固定宽度时如何迭代列中的所有值的算法:

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

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

最新更新