MySQL中采用类型varchar(20)和varchar(255)对性能上的影响 您所在的位置:网站首页 compactos对性能的影响 MySQL中采用类型varchar(20)和varchar(255)对性能上的影响

MySQL中采用类型varchar(20)和varchar(255)对性能上的影响

2024-07-17 10:50| 来源: 网络整理| 查看: 265

1、假设他们用来存储10个字符的数据,其存储空间相同。但是对于内存的消耗是不同的。对于VARCHAR数据类型来说,硬盘上的存储空间虽然都是根据实际字符长度来分配存储空间的,但是对于内存来说,则不是。其时使用固定大小的内存块来保存值。简单的说,就是使用字符类型中定义的长度,即200个字符空间。显然,这对于排序或者临时表(这些内容都需要通过内存来实现)作业会产生比较大的不利影响所以如果某些字段会涉及到文件排序或者基于磁盘的临时表时,分配VARCHAR数据类型时仍然不能够太过于慷慨。还是要评估实际需要的长度,然后选择一个最长的字段来设置字符长度。如果为了考虑冗余,可以留10%左右的字符长度。千万不能认为其为根据实际长度来分配存储空间,而随意的分配长度,或者说干脆使用最大的字符长度。所以楼主你说尽可能设置大一些完全错误,后来人看到你说的这些,每次设计数据库都给个200,明明长度给个20能解决,你看看内存有没有损耗

 

2、通常情况下使用varchar(20)和varchar(255)保持'hello'占用的空间都是一样的,但使用长度较短的列却有巨大的优势。较大的列使用更多的内存,因为MySQL通常会分配固定大小的内存块来保存值,这对排序或使用基于内存的临时表尤其不好。同样的事情也会发生在使用文件排序或者基于磁盘的临时表的时候。所以在设计数据库的时候,考虑字段的最大容量也是提升性能的一个点

3、

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了。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有