【发布时间】:2011-08-19 10:13:38
【问题描述】:
有人知道使用 VarChar(255) 和 VarChar(65536) 的区别吗?
这是我目前所知道的:
- VarChar(255) 将只使用一个字节来表示大小
- VarChar(65536) 将使用两个字节来表示大小
- VarChar(65536) 仅从 MySQL 5.0.3 开始存在
- MySQL 在 255 和 65536 之间使用不同的处理方式(虽然不知道有什么区别)
我不确定这些 varchar 之间是否存在任何性能差异。
假设我想创建一个包含多种行的表。 使用带有 'data_type1' 和 'data_type2' 的枚举
data_type1 在 varchar 中永远不会超过 255 个字符 data_type2 在 varchar 中的字符数大多超过 255 个
哪个解表会更好?
id (int) - autoincrement
type (enum : data_type1, data_type2)
msg (varchar(255))
data (TEXT)
在 type == data_type2 时仅使用“数据”列?
或
id (int) - autoincrement
type (enum : data_type1, data_type2)
msg (varchar(65536))
使用 'msg' 列,无论存在什么类型?
两种解决方案实际上都需要类型列以用于治疗目的。
编辑:
当 type == data_type2 时,存储的数据实际上永远不会超过 10000 个字符
编辑 2:
我不想在 msg 和 data 列中搜索
这是一个关于存储性能的简单问题,而不是索引或搜索性能...
【问题讨论】:
-
我真的不明白你在问什么。
-
我想,简而言之,我的问题是:在 1 和 2 之间哪个表更好,用于存储 2 种大小不同的数据类型
-
语义上,版本 2。
-
是的,我想是的,这就是我写它的原因,但如果解决方案 1 获取速度更快,谁在乎语义 ;)
-
我愿意!此外,它可能不是。无论如何,它不会成为你的瓶颈。如果您真的在乎,请对其进行描述。否则,只需编写它并继续做更重要的事情。