一开始说空间消耗是一样的,为什么后面又说会消耗更多的内存。这个该怎么理解?
笔误吧,应该是时间开销。
它这儿的空间开销指的是,占用的空间,在(5)和(200)里面‘hello’占用的空间是一样的
varchar可变长度指的是存储时候根据要存的内容占用空间,同样的内容只要可存占用空间开销是一致的,但是初始值定义的越大,需要分配的内存就越大
好比这个意思 一套100平方的房子, 和一个10平方的房子, 你一个人站进去 不管在哪个房子里都是占用一样的空间,只是100的能站100个人,
而你10平方的最多只能站10个人 , 最大容量不一样一样
用varchar(5)或者用varchar(200)来存储"hello"硬盘上所占用的空间是一致的。这点没问题
问题在于mysql在读取记录的时候需要将硬盘中的数据加载到内存里,mysql会分配固定大小的内存来存储,
我理解作者的意思是varchar(200)所分配的内存要比varchar(5)大。?(我猜varchar(200)应该是分配了200字节的内存 , varchar(5)是分配了5个字节的内存空间)
因此在定义表时尽可能指定小的宽度。