正如文档所说,mysql不会分配您为varchar指定的完整空间。它存储实际的数据长度。所以我猜这里可能还有副作用。就像一个varchar记录的原始长度是10,现在我想将它更新为20,但仍然没有达到指定的限制50.但是,之前分配的空间是不够的。 所以我的问题是MySQL如何处理这种情况?移动该记录后的所有内容需要很长时间?还是它必须这样做? 有没有人可以告诉我它是如何在内部工作的?提前致谢!使用varchar(x)有什么危害?
回答
MySQL处理得很好,你不应该关心细节。尽管长度不规则的记录比固定长度的记录管理起来要慢一些,但是如果记录通常小于固定大小,那么通过读取显着更少的数据会带来巨大的性能提升。
请记住,CHAR
列总是以最大大小存储和检索。即使平均记录只有10-15字节的数据,255个字符的字段也需要传输255个字节。这是相当大的开销。
使用CHAR
提出了一系列其他问题,因为该字段将始终为该长度,这意味着它必须完整地传输并且通常在客户端中被剥离。这比麻烦更麻烦。
CHAR
列在现代唯一使用的是用于总是定义的东西,并且将始终是一定的大小。一个例子可能是使用40个字符的十六进制编码哈希值作为标识符,但这些通常很少见,几乎在所有情况下,VARCHAR
也可以工作。
我可以想到几个可以使用'char'的例子 - 电话号码,电话号码,国家保险号码等等。但对于大多数情况'varchar'更好。 – 2012-07-18 20:42:27
即使在国家内,邮政编码的长度也会有很大差异,电话号码可能会有扩展名,等等。如果你曾经敢于假设*某种特定的固定长度,你通常会感到惊讶。我希望你不是用'CHAR(5)'邮政编码字段创建数据库,因为我之前就已经看到过,而且它已经超越了真气。 – tadman 2012-07-19 11:27:08
- 1. “无效实体”有什么危害吗?
- 2. 在MySQL中为varchar选择一个大值会有什么危害吗?
- 3. 忽略警告的危害是什么?
- 4. 有一个很长的maxDelayTime有什么危害?
- 5. 有很多枚举值会有什么危害吗? (many> = 1000)
- 6. 让git分支“变老”有什么危害吗?
- 7. 编译boost时,定义BOOST_DISABLE_ABI_HEADERS会有什么危害?
- 8. Objective-C中属性覆盖有什么危害?
- 9. 字节码操作的危害是什么(如果有的话)?
- 10. 不应分配参数'foo' - 有什么危害?
- 11. 使用32位MSI在64位Windows上安装“AnyCPU”程序有什么危害?
- 12. 管道的危害
- 13. MIPS结构危害
- 14. 使用svn有什么危险?
- 15. 分享我的android应用程序的apk有什么危害吗?
- 16. 没有虚拟方法的虚拟析构函数有什么危害吗?
- 17. 危害重载method_missing和method_added
- 18. 超正常化的危害?
- 19. 管道的危害问题
- 20. 动态SQL的危害是什么,可以避免吗?
- 21. 数组中的大量空值意味着什么危害?
- 22. 管道常见的管道危害是什么?
- 23. 当ACL已经到位时,给予网站充分信任有什么危害?
- 24. 在线程局部字典中放入django请求对象有什么危害?
- 25. 我是MySQL的新手,有什么方法可以危害数据库吗?
- 26. Java程序终止时无法关闭文件会有什么危害吗?
- 27. 获得ReCAPTCHA公钥/私钥时使用全局域有效性有什么危害?
- 28. 什么是使服务层中的静态方法危害 - 春季3
- 29. 如果我们使用Android Views的私人访问修饰符会有什么危害吗?
- 30. matlab中的经济模型和危害损害
相信我,关于磁盘存储优化,关系数据库在过去的40年中走过了很长的路要走。不要为了小东西而流汗。 – Olaf 2012-07-18 19:23:31