我在MySQL中有一个消息表,用于在用户之间记录消息.除了典型的id和消息类型(所有整数类型),我需要将实际的消息文本保存为VARCHAR或TEXT.我设置的前端限制为3000个字符,这意味着消息永远不会插入到数据库中,因为它比这更长.
是否有理由使用VARCHAR(3000)或TEXT?有一些关于编写VARCHAR(3000)的东西,感觉有点违反直觉.我已经浏览了Stack Overflow上的其他类似帖子,但是能够获得特定于此类公共消息存储的视图.
解决方法:
> TEXT和BLOB存储在表格之外,表格只有一个指向实际存储位置的指针.
> VARCHAR与表格内联存储.当大小合理时,VARCHAR会更快,其权衡取决于您的数据和硬件,您需要使用数据对真实世界场景进行基准测试.
更新VARCHAR或TEXT是以内联方式存储还是以非记录方式存储取决于数据大小,列大小,row_format和MySQL版本.它不依赖于“text”vs“varchar”.