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

标签 mysql database file text varchar

我试图用谷歌搜索这个,但我发现的任何结果都与从 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/

相关文章:

具有多个标题和多个计数的 sql 查询

database - magento:生产、登台和开发之间的数据库同步

插入更新删除时,通过 ODBC 到 MS Access 的 mysql 链接表表现不佳

mysql - 如何使用 ORDER BY 计算行数直到某个值

PHP while 无限循环而不是遍历 MySQL 表行

database - sql server 数据库文件大小已经是 4 gb 但里面的数据不多

mysql - 在MySql中检索列名而不是外部ID

linux - 如果我截断到比原来更大的尺寸,ftruncate() 会复制数据吗?

file - Borland StarTeam 2008 - 如何恢复文件和文件历史

c - 通过 C 中的套接字发送和接收文件