mySQL - Int(9.455.487)在mySQL中占用的空间比字符串(John)多吗?

时间:2014-07-22 13:15:57

标签: mysql

据我所知,在数据库中,int占用的空间少于字符串。但是如果int真的长于字符串会怎么样呢。例如9.455.487 vs“John”。哪一个会占用更多空间? TY

2 个答案:

答案 0 :(得分:7)

documentationint的大小是4个字节,而对于char,它是“M×w个字节,0 <= M <= 255,其中w是字符集中最大长度字符所需的字节数。“ M是声明的列大小。

因此,当您谈到占用了多少空间时,只要该值在int范围内,int将占用4个字节的值。像“John”这样的字符串,如果声明为char(4)将占用4 * w字节,所以至少4个字节,假设w为1。

长话短说,一个数字的大小不是你写出来的字符长度,而是用二进制形式表示它的字节数。

答案 1 :(得分:5)

您应该知道“int”(integer)是什么以及strings是什么。整数始终具有一定的长度,该长度表示字节在其二进制表示中的数量。另一方面,字符串是序列的字节。因此,根据encoding,每个符号可以是一个或多个字节。

9.455.487"John"“更长”的事情在这里无关紧要。相关的是DBMS(或其他任何环境)如何代表这些东西。你会看到“更长”的整数与“更短”的字符串,而不是这样,它只是“屏幕”表示的问题(即你在屏幕上看到的内容)。

回答问题 - 对于MySQL,INT是4个字节,而字符串数据类型可能有动态长度 - 例如VARCHAR。静态字符串长度日期类型为CHAR,从该角度来看,您的数字和字符串将具有相同的长度(4个字节)。字符串和整数只是比较“长度”的不同东西。视觉表现不应该让你感到困惑。这些实体具有不同的内部结构,因此,不应根据其视觉表示在“长度”上进行比较。

此外,您应该知道并非总是整数将具有4个字节的长度 - 因为即使在MySQL中,您的数字也可能属于,例如,BIGINT数据类型(长度为8个字节)。并且,如上所述,对于字符串,还存在编码问题。例如,UTF-8编码的字符串可能有两个(甚至更多)字节来表示一些非ASCII符号。在这种情况下,每个符号将增加1个字节到总字符串长度。