VARCHAR优化然后更新

时间:2010-12-27 09:53:57

标签: mysql

如果我将列设置为varchar(50),请用长度为20的字符串更新它。然后OPTIMIZE吧。如果我用一个超过20的字符串更新它会发生什么,比如说30?

(因为优化应该可以消除varchars上的多余行李......)

第二个问题:如果我有一个varchar(50)和一个包含51个字符的字符串的UPDATE会怎样?

第三个问题:这里的手册不清楚,但varchar的最大最佳字符串大小是多少?它是256或254(因为它需要额外的2个字节)还是别的什么?

  

“与CHAR相比,VARCHAR值存储为一个字节或   两字节长度前缀加数据。该   length前缀表示的数量   值中的字节数。一列使用一个   如果值不再需要,则为length   超过255个字节,两个长度字节if   值可能需要超过255   字节“。

感谢。

1 个答案:

答案 0 :(得分:0)

  1. 优化不会消除多余的行李,它只是像窗口碎片整理一样清理磁盘空间以进行大量删除 - details。如果你用一个长度为30的字符串进行更新,mysql就会存储为什么,只需存储就可以了,

  2. 如果用51更新字符串,最后一个字符将被剪切/截断

  3. 这不是varchar的最佳字符串大小,在很大程度上取决于您的应用程序使用情况,以及您如何使用mysql索引。最大varchar(255)仍保留为字符串,长度为255