首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql数据类型

mysql数据类型
EN

Stack Overflow用户
提问于 2011-01-12 22:53:34
回答 5查看 475关注 0票数 2

我的数据库中的大多数表都有varchar类型和长度设置为36的数据,用于填充本地创建的guids。在mysql中,varchar是最适合存储GUID值的数据类型还是其他类型?请解释一下

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-01-12 23:10:30

这是个好问题。我在很多地方看到他们使用varchar来表示各种看起来像数字的ID。那么为什么不使用整数呢?根据我的经验,主要有三种情况:

  1. 虽然它们是数字,但它们可能太大了。例如,您不能将整数(即使是64位大整数)用于32位数字(64位无符号整数的最大值是20位)。
  2. 某些数字有特殊的格式。例如,电话号码可能如下所示:+44(12)3456789。现在很明显,+、(和)不是数字的一部分,您可以在没有它们的情况下调用数字,但这是通常的格式,因此使用整数变量时,您将无法存储此数字。
  3. 将来您可能会将is更改为包含字母,因此最好从头开始允许字母,以避免以后必须更改数百万条记录。

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2011-01-12 23:05:46

你可能想看看PROCEDURE ANALYSE。它可以帮助您根据表中已有的内容建议适当的数据类型。

这里有一个blog post,它也谈到了过程分析,可能也会有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2011-01-13 01:38:58

如果您的GUID总是长度为36且不为null,请使用CHAR而不是VARCHAR。它将节省空间,因为VARCHAR必须为每行存储一个长度前缀。

此外,如果所有列的长度都是固定的,那么在某些情况下会提高性能,因为数据库可以更有效地扫描行。

MySQL Reference Manual - The CHAR and VARCHAR Types

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

https://stackoverflow.com/questions/4670147

复制
相关文章

相似问题

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