MySQL如何存储varchar字段?我可以假设以下模式代表合理的存储大小:
1,2,4,8,16,32,64,128,255(最大)
通过示例进行说明。可以说我有20个字符的varchar字段。MySQL在创建此字段时是否基本上保留32个字节的空间(不确定是否为字节),但只允许输入20个字节?
我想我担心优化大型表的磁盘空间。
为了回答这个问题,在磁盘上MySql使用1 +字段中用于存储数据的大小(因此,如果将该列声明为varchar(45),并且该字段为“ FooBar”,则它将在磁盘上使用7个字节,除非您当然使用多字节字符集,否则将使用14个字节)。因此,无论您声明自己的列,它都不会对存储端产生任何影响(您表示担心大型表的磁盘优化)。但是,它确实在查询中有所不同,因为当MySql生成临时表(SORT,ORDER等)时,VARCHAR转换为CHAR,并且可以容纳在单个页面中的记录越多,表扫描所需要的内存越少且速度越快是。