mysql-文本字段

mysql-文本字段,mysql,sql,string,types,Mysql,Sql,String,Types,我的表中需要一个字段来存储一些文本。300个字符是文本的限制 最佳选择是什么选项:varchar(300)或text?如果您有任何理由关心内存,varchar将只分配已使用的内存。我不确定text是如何做到的,但我会使用varchar(300)如果您有任何理由关心内存,varchar只会分配使用过的内存。我不确定text是如何做到的,但我会使用varchar(300)使用varchar(300)-如果规范要求300个字符的限制,您不希望支持超过这个限制。我将不得不挖掘我的答案,但是有人报告说通过

我的表中需要一个字段来存储一些文本。300个字符是文本的限制


最佳选择是什么选项:
varchar(300)
text

如果您有任何理由关心内存,
varchar
将只分配已使用的内存。我不确定
text
是如何做到的,但我会使用
varchar(300)
如果您有任何理由关心内存,
varchar
只会分配使用过的内存。我不确定
text
是如何做到的,但我会使用
varchar(300)
使用
varchar(300)
-如果规范要求300个字符的限制,您不希望支持超过这个限制。我将不得不挖掘我的答案,但是有人报告说通过将他们的
TEXT
列迁移到
VARCHAR

使用
VARCHAR(300)
-如果规范要求300个字符的限制,您不希望支持这样做。我必须找出我的答案,但有人报告说,通过将他们的
TEXT
列迁移到
VARCHAR
VARCHAR和TEXT列非常相似,取得了实质性的改进。报告说:

在大多数情况下,您可以将BLOB列视为VARBINARY列,该列可以任意大。类似地,可以将文本列视为VARCHAR列

以下是一些区别:

  • 出于索引目的,文本列的末尾填充为空白
  • 文本列不能有默认值
  • 如果文本所需的字节数小于256,则VARCHAR列的开销只有1字节。(特定文本所需的字节数取决于编码。)文本列的开销始终为2字节
  • VARCHAR列中的所有文本都按65535字节的行限制计数。文本列的文本单独存储,不计入此限制

  • VARCHAR和TEXT列非常相似。报告说:

    在大多数情况下,您可以将BLOB列视为VARBINARY列,该列可以任意大。类似地,可以将文本列视为VARCHAR列

    以下是一些区别:

  • 出于索引目的,文本列的末尾填充为空白
  • 文本列不能有默认值
  • 如果文本所需的字节数小于256,则VARCHAR列的开销只有1字节。(特定文本所需的字节数取决于编码。)文本列的开销始终为2字节
  • VARCHAR列中的所有文本都按65535字节的行限制计数。文本列的文本单独存储,不计入此限制