MySQL中相对短字符串的最佳实践和数据类型?

时间:2017-03-29 10:34:37

标签: mysql

在我工作过的大多数项目中,像用户名这样的东西都存储为默认的VARCHAR(45)。我错误地认为(45)只是显示限制,但the docs表示它是您要存储的最大字符数。

这对我来说似乎很烦人。这是否意味着您必须猜测高端并实施某种检查以在每次提供该字段的值时警告您的用户?大多数开发人员只是声明类似VARCHAR(10000)的东西吗?

我的另一个领域是简短摘要。 This answer给出了何时使用VARCHAR(用户名)和TEXT(消息)的示例。我所看到的领域可以通过我的最佳猜测得到300-2000字符范围内的字符串。这还适合VARCHAR吗?如果它试图存储太大的东西,保护或警告的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

Varchar数据类型适用于保存300-2000字符范围内的文本,因为它可以保存up to 65,535 bytes of data(请记住,如果使用多字节字符集,例如utf8,那么实际字节长度更多比字符长度。)

当您在varchar和任何text字段之间进行选择时,您需要考虑的是MySQL的总记录大小限制(65,535字节,在所有列之间共享):

  • varchar字段的整个字节长度计入记录大小限制
  • 对于text字段,只有表引擎相关部分存储在记录中,该部分计入总记录限制。其余的存储在其他地方(同样,它依赖于表引擎)。

因此,如果您需要在记录中存储多个2k字符长的字段,那么您可能会达到最大记录大小限制并被强制使用text。否则,您可以使用varchar

如果它试图存储太大的东西,保护或警告的最佳方法是什么?好吧,如果你阻止用户输入比允许更多的字符是一个好的开始。查看输入注释时SO的作用,这是限制可输入文本长度的一个很好的例子。但这完全取决于您的确切应用和受众。