1

我正在使用 MySQL,并且我在某些地方读到 using CHARin indexed columns 比 use 快 20% VARCHAR。在其他地方似乎它的好处是只有当表没有任何VARCHAR列时。真的吗?

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

4

1 回答 1

5

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

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

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

于 2012-08-28T21:04:11.127 回答