数码资讯
和MySQL数据库的CHAR和VARCHAR使用建议的差异分析
在数据库中,字符型的数据是最多的,可以占到整个数据库的80%。字符型数据的正确处理对提高数据库的性能有很大的影响。在字符型数据,最常用的是两种Char和VARCHAR。前面是固定长度,和后面的是可变长度的,我们需要考虑的是,在什么情况下,使用字符数据和字符型数据的使用时,Varchar。 一、var
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
在数据库中,字符型的数据是最多的,可以占到整个数据库的80%。字符型数据的正确处理对提高数据库的性能有很大的影响。在字符型数据,最常用的是两种Char和VARCHAR。前面是固定长度,和后面的是可变长度的,我们需要考虑的是,在什么情况下,使用字符数据和字符型数据的使用时,Varchar。
一、varchar和char字符数据的差异
在MySQL数据库中,用的最多的字符型数据类型varchar和char ..虽然这两种类型的数据用于存储字符型数据,它们是非常不同的结构和数据的保存,其具体实施还取决于存储引擎。我把最常用的MyISAM存储引擎作为一个例子来谈谈这两种类型的数据之间的差异。在随后的建议,也正是因为这一类型的存储。
首先要明白的是这里的两种数据类型,无论哪种类型的仓库,在系统存储数据的方式不同。正因为如此,它是我们研究这两者之间的区别是必要的。然后,在适当的情况下,在适当的方法。明白这一点后,我们在下面看。
varchar经常用来保存可变长度的字符串。总之,我们只是固定了一个最大值,然后系统将基于存储在实际存储的数据量的存储空间。因此,相比于字符的字符数据,它占用的存储空间比固定长度类型少然而,在实际工作中,异常将被设置在一个特别的原因。例如,管理员可以指定row_format =固定选项的要求。使用此选项来创建一个MyISAM表,系统将使用固定长度的空间,每一行。这会造成存储空间中的损失。一般情况下,VARCHAR数据类型可以节省磁盘空间,所以它经常被认为是能够提高性能但这里需要注意的是,这常常是一把双刃剑,在提高性能时,常常会产生一些副作用。例如,由于它的长度是可变的,在数据更新时可能会导致额外的工作。例如,字符的长度在更改前是10位。在Varchar的最长字符数为50位。此时,系统只分配10的存储位置的系统(假设不考虑系统本身的成本)。变更后,数据量达到20位。因为有50位最大没有限制,数据库还可以存储它。只有原来的存储位置已无法满足其存储需求。在这一点上,系统需要做额外的操作。如果存储引擎不同,有的会采用分裂机制,而另一些人则使用分页机制。
CHAR数据类型不同于varchar数据类型,它使用一个固定长度的存储模式,在一个简单的方法,系统总是分配的最大存储空间。当数据被保存,即使它没有达到最大的长度,系统会为它分配这么多的存储空间。显然,这种存储方式会造成浪费的磁盘空间。有一点要提醒的是,当字符数不足时,系统将不会填满空间。相反,如果保存的字符值,系统会自动过滤空间,如果它背后有一个空值时。的数据进行比较,系统会在字符串末尾填充空间。
显然,相比于这两个字符型的数据类型varchar和char,最大的区别是,前者是可变长度的,后者是一种固定的长度。在存储前将最终的存储空间,根据存储在实际存储的数据。后者,无论数据实际长度,是根据字符指定的长度分配存储空间。这是否意味着CHAR数据类型比varchar事实上,它不是。否则,没有必要有char字符类型。虽然varchar数据类型可以节省存储空间,提高数据处理的效率。但一些负面效应的可变长度有时抵消其带来的优势。在某些情况下,它仍然是必要的字符数据类型。
两。项目建议书
根据以上的分析,我们知道varchar数据类型是一把双刃剑,它会带来一些额外的消费,同时提高性能。我们需要平衡,当我们评估我们是否使用varchar数据类型或字符数据类型,在实际项目中,我们将考虑以下。
一是通过字符的长度判断。作为一个领域,就像一个人的名字,它最长的长度也是有限的。如果我们将这18个字符长度。在这个时候,虽然每个人的名字的长度可能不同,即使它分配一个固定长度的字符类型,,是的,18个字符的长度,最后浪费空间不是很大。如果采用nvarchar数据类型,如果需要重命名后,与原有的存储空间不足以容纳新的价值,这将导致一些额外的工作。在这种情况下,焦炭的固定长度的数据类型是当进行的平衡。在一个实际的项目,一个固定的字符长度通常如果一个字段的字符长度短的应用。
二是考虑是否长度相同或不相同的。如果一个字段的长度很长,它的长度总是相似的,如90和100个字符之间,甚至是相同的长度。最好是在这个时候使用char字符类型。更典型的是MD5哈希值当使用MD5哈希值存储用户的密码,它是用char字符类型非常有用。因为长度是相同的。此外,通常建议使用char类型的数据,如身份证号码存储用户,等等。
另外,请考虑一个问题,与炭的区别是什么(1)和varchar(1)两个虽然这两个只能用来保存一个字符,VARCHAR占用一个存储位置超过字符。这主要是因为使用varchar数据类型时,1字节用于存储长度信息。头顶的char字符型这种管理不。
三是从碎片来看,使用char字符类型时,存储空间在一个时间所有的分配。一个字段的内容存储在一起用于这一目的。从这一点来看,它并没有困扰的碎片。和字符数据类型的变量长,存储的长度是可变的,当数据长度不一致的前后的变化,那碎片问题的出现是必然的。所以当使用可变长度的字符型数据,数据库管理员要整理碎片的时间。消除碎片,如数据库的出口进口工作的执行。
四是即使varchar数据类型的使用,也不能太慷慨了。那是什么意思例如,用户需要存储一个地址信息,根据评价,只有100个字可以用。但是有些数据库管理员会觉得varchar数据类型是根据实际需要分配的长度。最好给它稍微大一点。为此,他们可能会分配200个字符的存储空间,这一领域。这是varchar(100)真的同为varchar(200)结果是否定的。虽然他们是用来存储90个字符的数据,它们具有相同的存储空间,但是内存的消耗量是不同的。对于varchar数据类型,硬盘的存储空间是根据实际字符长度分配内存,但是,它不是。当时,固定大小的内存块用于保存价值。在一个简单的方法,它是字符类型,定义的长度,200个字符的空间。显然,这有一个很大的负面影响,排序或临时表(需要通过内存)。所以如果有一些领域参与文件排序或基于磁盘的临时表,它仍然是不太慷慨的分配varchar数据类型。也是衡量的长度实际需要,然后选择最长的字段来设置字符的长度,为了考虑冗余,字符长度可以保持在10%左右,不应考虑根据实际长度分配存储空间,并随意分配长度,或者只使用最大字符长度。
一、varchar和char字符数据的差异
在MySQL数据库中,用的最多的字符型数据类型varchar和char ..虽然这两种类型的数据用于存储字符型数据,它们是非常不同的结构和数据的保存,其具体实施还取决于存储引擎。我把最常用的MyISAM存储引擎作为一个例子来谈谈这两种类型的数据之间的差异。在随后的建议,也正是因为这一类型的存储。
首先要明白的是这里的两种数据类型,无论哪种类型的仓库,在系统存储数据的方式不同。正因为如此,它是我们研究这两者之间的区别是必要的。然后,在适当的情况下,在适当的方法。明白这一点后,我们在下面看。
varchar经常用来保存可变长度的字符串。总之,我们只是固定了一个最大值,然后系统将基于存储在实际存储的数据量的存储空间。因此,相比于字符的字符数据,它占用的存储空间比固定长度类型少然而,在实际工作中,异常将被设置在一个特别的原因。例如,管理员可以指定row_format =固定选项的要求。使用此选项来创建一个MyISAM表,系统将使用固定长度的空间,每一行。这会造成存储空间中的损失。一般情况下,VARCHAR数据类型可以节省磁盘空间,所以它经常被认为是能够提高性能但这里需要注意的是,这常常是一把双刃剑,在提高性能时,常常会产生一些副作用。例如,由于它的长度是可变的,在数据更新时可能会导致额外的工作。例如,字符的长度在更改前是10位。在Varchar的最长字符数为50位。此时,系统只分配10的存储位置的系统(假设不考虑系统本身的成本)。变更后,数据量达到20位。因为有50位最大没有限制,数据库还可以存储它。只有原来的存储位置已无法满足其存储需求。在这一点上,系统需要做额外的操作。如果存储引擎不同,有的会采用分裂机制,而另一些人则使用分页机制。
CHAR数据类型不同于varchar数据类型,它使用一个固定长度的存储模式,在一个简单的方法,系统总是分配的最大存储空间。当数据被保存,即使它没有达到最大的长度,系统会为它分配这么多的存储空间。显然,这种存储方式会造成浪费的磁盘空间。有一点要提醒的是,当字符数不足时,系统将不会填满空间。相反,如果保存的字符值,系统会自动过滤空间,如果它背后有一个空值时。的数据进行比较,系统会在字符串末尾填充空间。
显然,相比于这两个字符型的数据类型varchar和char,最大的区别是,前者是可变长度的,后者是一种固定的长度。在存储前将最终的存储空间,根据存储在实际存储的数据。后者,无论数据实际长度,是根据字符指定的长度分配存储空间。这是否意味着CHAR数据类型比varchar事实上,它不是。否则,没有必要有char字符类型。虽然varchar数据类型可以节省存储空间,提高数据处理的效率。但一些负面效应的可变长度有时抵消其带来的优势。在某些情况下,它仍然是必要的字符数据类型。
两。项目建议书
根据以上的分析,我们知道varchar数据类型是一把双刃剑,它会带来一些额外的消费,同时提高性能。我们需要平衡,当我们评估我们是否使用varchar数据类型或字符数据类型,在实际项目中,我们将考虑以下。
一是通过字符的长度判断。作为一个领域,就像一个人的名字,它最长的长度也是有限的。如果我们将这18个字符长度。在这个时候,虽然每个人的名字的长度可能不同,即使它分配一个固定长度的字符类型,,是的,18个字符的长度,最后浪费空间不是很大。如果采用nvarchar数据类型,如果需要重命名后,与原有的存储空间不足以容纳新的价值,这将导致一些额外的工作。在这种情况下,焦炭的固定长度的数据类型是当进行的平衡。在一个实际的项目,一个固定的字符长度通常如果一个字段的字符长度短的应用。
二是考虑是否长度相同或不相同的。如果一个字段的长度很长,它的长度总是相似的,如90和100个字符之间,甚至是相同的长度。最好是在这个时候使用char字符类型。更典型的是MD5哈希值当使用MD5哈希值存储用户的密码,它是用char字符类型非常有用。因为长度是相同的。此外,通常建议使用char类型的数据,如身份证号码存储用户,等等。
另外,请考虑一个问题,与炭的区别是什么(1)和varchar(1)两个虽然这两个只能用来保存一个字符,VARCHAR占用一个存储位置超过字符。这主要是因为使用varchar数据类型时,1字节用于存储长度信息。头顶的char字符型这种管理不。
三是从碎片来看,使用char字符类型时,存储空间在一个时间所有的分配。一个字段的内容存储在一起用于这一目的。从这一点来看,它并没有困扰的碎片。和字符数据类型的变量长,存储的长度是可变的,当数据长度不一致的前后的变化,那碎片问题的出现是必然的。所以当使用可变长度的字符型数据,数据库管理员要整理碎片的时间。消除碎片,如数据库的出口进口工作的执行。
四是即使varchar数据类型的使用,也不能太慷慨了。那是什么意思例如,用户需要存储一个地址信息,根据评价,只有100个字可以用。但是有些数据库管理员会觉得varchar数据类型是根据实际需要分配的长度。最好给它稍微大一点。为此,他们可能会分配200个字符的存储空间,这一领域。这是varchar(100)真的同为varchar(200)结果是否定的。虽然他们是用来存储90个字符的数据,它们具有相同的存储空间,但是内存的消耗量是不同的。对于varchar数据类型,硬盘的存储空间是根据实际字符长度分配内存,但是,它不是。当时,固定大小的内存块用于保存价值。在一个简单的方法,它是字符类型,定义的长度,200个字符的空间。显然,这有一个很大的负面影响,排序或临时表(需要通过内存)。所以如果有一些领域参与文件排序或基于磁盘的临时表,它仍然是不太慷慨的分配varchar数据类型。也是衡量的长度实际需要,然后选择最长的字段来设置字符的长度,为了考虑冗余,字符长度可以保持在10%左右,不应考虑根据实际长度分配存储空间,并随意分配长度,或者只使用最大字符长度。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。