MySQL: Large VARCHAR vs. TEXT?

30 浏览
0 Comments

MySQL: Large VARCHAR vs. TEXT?

我在MySQL中有一个消息表,记录用户之间的消息。除了典型的id和消息类型(全部为整数类型)之外,我需要将实际消息文本保存为VARCHAR或TEXT。我设定了前端限制为3000个字符,这意味着消息永远不会被插入到db中的长度超过此限制。

那么,采用VARCHAR(3000)或TEXT有什么理由呢?只是写VARCHAR(3000)感觉有些不直观。我已经通过Stack Overflow上的其他类似帖子,但获取针对这种常见消息存储的特定意见将是好的。

admin 更改状态以发布 2023年5月24日
0
0 Comments

你能预测用户输入的长度吗?

VARCHAR(X)

最大长度:可变,最多65,535字节(64KB)
案例:用户名、电子邮件、国家、主题、密码


TEXT

最大长度:65,535字节(64KB)
案例:消息、电子邮件、评论、格式化文本、HTML、代码、图像、链接


MEDIUMTEXT

最大长度:16,777,215字节(16MB)
案例:大型JSON正文、短到中等长度的书籍、CSV字符串


LONGTEXT

最大长度:4,294,967,29字节(4GB)
案例:教科书、程序、数年的日志文件、哈利·波特与火焰杯、科学研究日志

关于这个问题,还有更多信息,请参见此问题

0
0 Comments
  • TEXTBLOB可能会与表格分开存储,表格只会有一个指向实际存储位置的指针。存储位置取决于很多因素,例如数据大小、列大小、行格式和MySQL版本。

  • VARCHAR与表格内嵌存储。如果大小适当,VARCHAR存储更快,哪一个更快取决于您的数据和硬件,您需要使用您的数据进行真实场景测试来确定。

0