在 MySQL 数据库中使用的 VARCHAR(MAX) 与 TEXT 与 .txt 文件

VARCHAR(MAX) vs TEXT vs .txt file for use in MySQL database

我尝试 google 这个,但我发现的任何结果都与从 txt 文件导入数据以填充数据库有关,而不是存储数据。

对我来说,文件的内容应该存储在数据库中似乎很奇怪。我们正在努力构建一个电子商务网站,每个项目都有一个描述。我假设标准是将描述存储在 txt 文件中,URL 存储在数据库中,而不是将大量内容存储在数据库中以保持文件大小低和速度快。当您需要将图像存储在数据库中时,您可以使用 URL 引用它而不是存储所有像素数据 - 为什么文本会有所不同? 这就是我的想法,但每个人似乎都在争论 VARCHAR 与 TEXT,那么存储最多 1000 个字符的文本数据的最佳方式到底是什么? 谢谢!

将长文本数据或图像数据存储在数据库中还是外部文件中没有正确或错误的答案。双方各有利弊 — 尽管许多开发人员明确声称您应该将图像存储在数据库之外。

考虑到您可能希望文本数据:

  • 允许回滚更改。
  • 支持事务隔离。
  • 强制执行对数据的 SQL 访问权限。
  • 创建全文索引时可在 SQL 中搜索。
  • 支持NOT NULL约束,因此您的文本需要包含东西
  • 创建数据库备份时自动包含(并且文本的版本是正确的版本,保证与其他数据的一致性)。
  • 自动将文本传输到副本数据库实例。

对于上述所有内容,您需要将文本存储在数据库中。如果文本在数据库之外,这些功能将不起作用。

关于 VARCHAR 与 TEXT,我可以回答 MySQL(尽管您提到了 VARCHAR(MAX),所以您可能指的是 Microsoft SQL 服务器)。

  • 在 MySQL 中,VARCHAR 和 TEXT 的最大字节数均为 64KB。如果你使用 多字节字符集,最大字符数较低。

  • VARCHAR 和 TEXT 都有字符集和排序规则。

  • VARCHAR 允许使用 DEFAULT,但 TEXT 不允许。

  • 在 InnoDB 存储引擎内部,VARCHAR 和 TEXT 的存储方式相同(以及 VARBINARY 和 BLOB 及其所有同类)。参见 https://www.percona.com/blog/2010/02/09/blob-storage-in-innodb/