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

MySql数据类型的使用
EN

Stack Overflow用户
提问于 2011-03-18 17:42:44
回答 5查看 367关注 0票数 2

以下面的例子为例,我试图找出建立MySql数据库的最佳方法。

FoodGroupTypeCode:谷物、蔬菜、水果、乳制品、蛋白质

用来表示此属性的最佳数据类型是什么?

  1. CHAR(1):G,V,F,D,P
  2. TINYINT:使用数字码(即谷物= 1,Vege = 2)
  3. ENUM
  4. VARCHAR(9):使用全名
  5. Other(解释)

)

选项4实际上不是我的考虑因素,除非有人能真正验证它。我读过很多关于这个问题的“意见”,但我想找出更具体的理由来选择一个而另一个。我很感激有人能给这个学位的任何输入,而不是像“我喜欢ENUM,因为它是快速的”之类的东西。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-03-18 19:28:10

CHAR(1):G,V,F,D,P

性能,存储效率和结果可读的代码。当我知道这些值是稳定的时,当我需要将行为附加到代码中时,我就倾向于这个解决方案。(if code = 'G' then specific behaviour)。

TINYINT:使用数字码(即谷物= 1,Vege = 2)

性能好,存储效率高,但代码可读性差。如果值发生变化,这个解决方案也可以避免混淆(G最初是谷物,但现在变成了大脑)。这是最常见的。

ENUM

除了极小的性能效益之外,我看不到使用枚举的唯一好处。当然,如果你真的有一个性能问题,那么小小的性能增益是永远不够的。

VARCHAR(9):使用全名

结果是可读的代码。某些查询将有较少的联接,在这些特定情况下提供性能好处。存储效率不高,如果要更改值,可能会出现问题。如果您有很多有很多行的表,并且它们都引用了这个表,那么在冒险之前要仔细考虑。

票数 2
EN

Stack Overflow用户

发布于 2011-03-18 17:49:14

我推荐ENUM,因为它会限制你选择谷物,蔬菜,水果,奶制品,蛋白质。

但是,在数据库中,我通常使用带有Check约束的VARCHAR(2)来执行此操作(只能是谷物、蔬菜、水果、奶制品或蛋白质),然后在我的应用程序中将其表示为ENUM或List。

票数 1
EN

Stack Overflow用户

发布于 2011-03-18 17:53:17

选择合适的数据类型完全取决于如何处理应用程序中的表数据(如果有的话),如果您拥有这个表只是为了存储记录而不是VARCHAR,这将是一个更好的选择,因为它将使您的数据更加冗长,但是如果要对表数据进行处理,比如按照特定的标准过滤结果,那么在应用程序逻辑中比较它们时,长名称可能会造成混淆,在这种情况下,CHARTINYINT将是一个更好的选择。而基于所使用的数据类型的性能影响应该是第二个优先事项。

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

https://stackoverflow.com/questions/5355833

复制
相关文章

相似问题

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