varchar nvarchar 设计长度时 设计成 (2^n)-1 的好处

这个问题想说已久就是博没共享出来

首先提出个问题 

CREATE TABLE `test` (
  `a` varchar(200) DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8

VS

CREATE TABLE `test` (
  `a` varchar(255) DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8

 

是否感觉有什么异常没有的话 各位看官请往下看把

CREATE TABLE `test` (
  `a` varchar(256) DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8

 

这个 255 256大家有什么感想没有

经历过一些公司以及一些项目大家是否常见到

varchar(511)
varchar(255)
varchar(127)
varchar(64)
varchar(32)
varchar(16)
varchar(8)
让你设计长度是 你是否就这样
varchar(10)
varchar(20)
varchar(100)
varchar(150)
自然界中是十进制而计算机是二进制

 1 bytes = 8 bit ,一个字节最多可以代表的数据长度是2的8次方 11111111 在计算机中也就是-128到127

①因为varchar类型存储变长字段的字符类型,当存储的字符串长度小于255字节时,其需要1字节的空间,当大于255字节时,需要2字节的空间。
②使用2 ^ n长度是更好的磁盘或内存块对齐。对齐块更快。今天“块”的大小更大,内存和磁盘足够快,可以忽略对齐,对于非常大的块来说是非常重要的。

因此为了更加合理的利用我们珍贵的磁盘和内存大家一定要在设计表的时候注意一些细节

PS:细节决定成败By《魁北克大桥》
posted @ 2019-05-21 16:59  @_追寻_@  阅读(850)  评论(0编辑  收藏  举报