MySQL 中的 varchar/text/longtext 列是否占据文件系统中的完整长度大小,即使对于不完整的单元格也是如此?
参考这篇博客文章 http://boolean.co.nz/blog/max-length-for-mysql-text-field-types/135/例如,我有以下列,并且我在其中输入了给定的字符串。
CHAR (72) - can store upto 72 characters - i put in a string "abcd"
VARCHAR (72) - can store upto 72 characters - i put in a string "abcd"
TINYTEXT - can store upto 255 characters - i put in a string "abcd"
TEXT - can store upto 65,535 characters - i put in a string "abcd"
LONGTEXT - can store upto 4,294,967,295 characters - i put in a string "abcd"
一行中的每一列将占用多少实际物理空间?
每列能够存储的完整大小?
或者仅存储“abcd”所需的数量?
查看http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html
基本上,除了以下所有类型CHAR
是可变长度的。
例如,如果您有VARCHAR(72)
你写abcd
其中,您将存储 5 个字节。每个字符 4 个字节,以及一个 1 字节前缀来存储字符串的长度(即 4)。
如果字符串的长度超过 255 个字符,则 VARCHAR 前缀将为 2 个字节。所以一个VARCHAR(300)
存储256个字符的字符串将占用258个字节。
TINYTEXT
始终有 1 字节前缀,因为它只能存储 255 个字符,所以abcd
需要 5 个字节。
TEXT
有一个 2 字节前缀,所以abcd
将为 6 个字节。
LONGTEXT
有一个 4 字节前缀,所以abcd
将是8个字节。
最后,还有几乎没用的CHAR
类型。 ACHAR(72)
无论您在其中存储什么,都将始终占用 72 个字节。它实际上只适用于超短字段,其中字段中的字符数始终完全相同。喜欢Y
or N
会是一个很好的CHAR(1)
候选人。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)