MySQL如何存储varchar字段?我是否可以假设以下模式代表合理的存储大小:
1,2,4,8,16,32,64128255(最大值)
举例说明.假设我有一个20个字符的varchar字段.MySQL在创建这个字段时,基本上是为32字节(不确定是否为字节)保留空间,但只允许输入20字节吗?
我想我担心的是如何优化磁盘空间来容纳一张大桌子.
MySQL如何存储varchar字段?我是否可以假设以下模式代表合理的存储大小:
1,2,4,8,16,32,64128255(最大值)
举例说明.假设我有一个20个字符的varchar字段.MySQL在创建这个字段时,基本上是为32字节(不确定是否为字节)保留空间,但只允许输入20字节吗?
我想我担心的是如何优化磁盘空间来容纳一张大桌子.
为了回答这个问题,在磁盘上,MySql使用1+字段中用于存储数据的大小(因此,如果列被声明为varchar(45),字段为"FooBar",它将在磁盘上使用7个字节,当然,除非您使用多字节字符集,否则它将使用14个字节).因此,无论您如何声明列,它都不会对存储端产生影响(您曾说过,您担心大型表的磁盘优化).然而,这确实会对查询产生影响,因为当MySql创建一个临时表(排序、顺序等)时,VARCHAR会转换为CHAR,并且单个页面中可以容纳的记录越多,表扫描的内存越少,速度也越快.