我在 MySQL 中有一个消息表,用于记录用户之间的消息。除了典型的 id 和消息类型(所有整数类型)之外,我需要将实际的消息文本保存为 VARCHAR 或 TEXT。我设置了 3000 个字符的前端限制,这意味着消息永远不会插入到数据库中的时间长于这个长度。
使用 VARCHAR(3000) 或 TEXT 是否有理由?写 VARCHAR(3000) 有点违反直觉。我已经在 Stack Overflow 上浏览过其他类似的帖子,但如果能获得特定于这种常见消息存储类型的视图会很好。
TEXT并且BLOB 可以 通过存储在表外,表中只有一个指向实际存储位置的指针。它的存储位置取决于很多因素,例如数据大小、列大小、row_format 和 MySQL 版本。
TEXT
BLOB
VARCHAR与表内联存储。VARCHAR当大小合理时速度会更快,其权衡会更快取决于您的数据和硬件,您希望使用您的数据对真实场景进行基准测试。
VARCHAR