【发布时间】:2021-11-17 06:50:49
【问题描述】:
假设所有环境(引擎、字符集等)都相同,将字符串“hello”存储在 varchar(64) 或 varchar(255) 列中是否有区别? (例如,引擎自动为最大长度分配空间或填充字符串)
为了提供一些上下文,我有一个案例,我将在 99% 的时间内存储长度小于 64 的文本,而在剩余 1% 的时间内存储长度在 64 到 255 之间的文本。
现在,如果 varchar(255) 的开销很大,那么我将为长字符串的情况创建一个单独的表,但如果没有任何开销,那么我只会将该列声明为 varchar(255)。
我能找到的最接近的答案是以下问题: How much real storage is used with a varchar(100) declaration in mysql?
但是它并没有准确回答我的问题。
【问题讨论】:
-
其他问题的哪些部分没有得到解答?
-
它没有说字符串是否会被填充到定义的长度,这正是我所关心的。
-
你为什么关心这个?另外,请通过编辑为您的问题添加所有说明
-
另外,对“较长”文本使用单独的表格听起来不像是好的数据库设计。您将如何在这样的设置中高效地运行查询?
-
我很在意,因为该表将有数百万行,磁盘存储可能会受到严重影响,这意味着成本更高