栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

对所有基于文本的字段使用通用varchar(255)有不利之处吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

对所有基于文本的字段使用通用varchar(255)有不利之处吗?

在存储中,

VARCHAr(255)
它足够聪明,可以仅存储给定行上所需的长度,而
CHAr(255)
后者通常会存储255个字符。

但是,由于您使用MySQL标记了此问题,因此我将提到一个MySQL特定的技巧:将行从存储引擎层复制到SQL层时,

VARCHAR
将转换字段
CHAR
以获得利用固定宽度行的优势。因此,内存中的字符串将
填充到 声明的
VARCHAR
的最大长度

当查询隐式生成临时表时(例如在排序或时)

GROUPBY
,这会占用大量内存。如果您使用很多
VARCHAr(255)
字段来存储不需要那么长的数据,这会使临时表变得非常大。

您可能还想知道,这种“填充”行为意味着,即使您存储的是单字节内容的字符串(例如ascii或latin1字符),用utf8字符集声明的字符串也每个字符填充至三个字节。同样,utf8mb4字符集会使字符串在内存中每个字符填充到四个字节。

因此,

VARCHAr(255)
在utf8中,存储诸如“无意见”之类的短字符串的磁盘上需要11个字节(十个低字符集字符,再加上一个字节的长度),但是在内存中则需要765个字节,因此在临时表或排序结果中也是如此。

我曾帮助不知不觉地频繁创建1.5GB临时表并填满磁盘空间的MySQL用户。他们有很多

VARCHAr(255)
列,实际上存储很短的字符串。

最好根据要存储的数据类型定义列。如其他人所提到的,它具有强制执行与应用程序相关的约束的好处。但是它具有避免上面所述的内存浪费的物理好处。

当然,很难知道最长的邮政地址是什么,这就是为什么许多人选择的长度

VARCHAR
肯定比任何地址都要长的原因。通常使用255,因为它是a的最大长度
VARCHAR
,该长度可以用一个字节编码。它也是
VARCHAR
MySQL早于5.0
的最大长度。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/405193.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号