Loading

mysql字段varchar长度分配对性能的影响

varchar是存储可变长度的字符串,简单的说我们定义表机构的时候指定的字段长度是最大长度,当字符串没有达到最大长度的时候以字符串的实际长度来存储的,不占用多余的存储空间。
一般情况下使用varchar(10)和varchar(100)保存'fuk'占用的空间都是一样的,但是更小的varchar(10)有着更好的性能。
比如:MySQL建立索引时如果没有限制索引的大小,索引长度会默认采用的该字段的长度,也就是说varchar(100)建立的索引存储大小要比varchar(10)建立索引存储大小大的多,加载索引使用的内存也更多。 比如:Values in VARCHAR columns are variable-length strings. The length can be specified as a value from 0 to 65,535. The effective maximum length of a VARCHAR is subject to the maximum row size ( 65,535 bytes, which is shared among all columns) 就说所,所有的列长度加起来不能操作65,535 bytes大小,如果你的varchar长度设置大了,那么给其他列使用的长度大小就小了。关于这个更多介绍,请看column-count-limit 实际中根据使用场景选择合适的长度就ok了。

较大的列使用更多的内存,因为MySQL通常会分配固定大小的内存块来保存值,这对排序或使用基于内存的临时表尤其不好。同样的事情也会发生在使用文件排序或者基于磁盘的临时表的时候。所以在设计数据库的时候,考虑字段的最大容量也是提升性能的一个点。

posted @ 2020-12-15 15:30  Mang0  阅读(3892)  评论(0编辑  收藏  举报