我试图用谷歌搜索这个,但我发现的任何结果都与从 txt 文件导入数据以填充数据库而不是存储数据有关。
对我来说,文件的内容应该存储在数据库中似乎很奇怪。我们正在构建一个电子商务网站,每个项目都有一个描述。我认为标准是将描述存储在 txt 文件中,将 URL 存储在数据库中,而不是将大量内容存储在数据库中,以保持文件大小小和速度高。当您需要在数据库中存储图像时,您可以使用 URL 引用它,而不是存储所有像素数据 - 为什么文本会有所不同? 这就是我的想法,但每个人似乎都在争论 VARCHAR 与 TEXT,那么存储最多 1000 个字符左右的文本数据的最佳方式到底是什么? 谢谢!
最佳答案
是否将长文本数据或图像数据存储在数据库或外部文件中没有正确或错误的答案。双方都有利弊 - 尽管许多开发人员明确声称您应该将图像存储在数据库之外。
考虑您可能希望文本数据:
- 允许回滚更改。
- 支持事务隔离。
- 强制执行对数据的 SQL 访问权限。
- 创建全文索引时可在 SQL 中搜索。
- 支持
NOT NULL
约束,因此您的文本需要包含某些内容。 - 创建数据库备份时自动包含在内(并且文本版本是正确版本,确保与其他数据的一致性)。
- 自动将文本传输到副本数据库实例。
对于上述所有内容,您需要将文本存储在数据库中。如果文本位于数据库之外,这些功能将不起作用。
关于 VARCHAR 与 TEXT,我可以回答 MySQL(尽管您提到了 VARCHAR(MAX),所以您可能指的是 Microsoft SQL Server)。
在 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/
关于mysql - MySQL 数据库中使用的 VARCHAR(MAX) 与 TEXT 与 .txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47167851/