首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MySQL的最佳varchar大小是多少?

MySQL的最佳varchar大小是多少?
EN

Stack Overflow用户
提问于 2009-07-20 04:09:31
回答 2查看 47.3K关注 0票数 71

MySQL如何存储varchar字段?我可以假设以下模式表示合理的存储大小:

1,2,4,8,16,32,64,128,255 (最大)

通过示例进行说明。假设我有一个20个字符的varchar字段。MySQL在创建这个字段时,是否基本上预留了32字节的空间(不确定它们是不是字节),而只允许输入20字节?

我想我担心的是如何优化一个大型表的磁盘空间。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-20 05:30:45

为了回答这个问题,在磁盘上,MySql使用1+字段中用于存储数据的大小(因此,如果列被声明为varchar(45),并且字段为"FooBar“,那么它将在磁盘上使用7个字节,当然,除非您使用多字节字符集,而它将使用14个字节)。因此,无论您如何声明列,在存储端都不会有什么不同(您曾说过,您担心大型表的磁盘优化)。但是,它在查询中确实起到了作用,因为当MySql创建临时表(SORT、ORDER等)时,VARCHAR会转换为CHAR,并且一个页面中可以容纳的记录越多,表扫描的内存就越少,扫描速度也就越快。

票数 60
EN

Stack Overflow用户

发布于 2009-07-20 04:13:51

MySQL将varchar字段存储为可变长度记录,使用一个字节或两个字节的前缀来指示记录大小。

在处理可变长度记录存储时,存储大小模式对MySQL的工作方式没有任何影响。varchar(x)声明中指定的长度将简单地确定可以存储的数据的最大长度。基本上,varchar(16)与varchar(128)在磁盘方面没有什么不同。

This manual page有更详细的解释。

编辑:对于您更新的问题,答案仍然是相同的。varchar字段只会占用与您在其中存储的数据一样多的磁盘空间(外加一个或两个字节的开销)。因此,无论是varchar(16)还是varchar(128)都无关紧要,如果您在其中存储一个10个字符的字符串,您将只使用10个字节(加上1或2)的磁盘空间。

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1151667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档