[mysql新增空格字段]少年阿斌
TEXT类别通常分成 TINYTEXT(255长度)、TEXT(65535)、 MEDIUMTEXT(int最小值16M),和LONGTEXT(long最小值4G)这三种,它被用以储存非十进制Unicode,十进制Unicode采用blob类别的表头来储存。
对text列,填入时MySQL不能对它展开充填,因此select时不能删掉任何人结尾的十进制。
假如text列被做为检索,则在它的文本前面加进字符时,会出现duplicate key严重错误,换句话说,假如他们表述了三个做为检索的text表头,它的值是a,则不能表述三个值a 的历史记录,因为这样会造成武装冲突。
对text列展开次序的这时候,下定决心次序的数组特征值是由模块max_sort_length来下定决心的
text和varchar的差别
在绝大多数情况下,他们可以把text视作varchar表头,但这三个表头类别在储存数组大小不一上有一些差别:
varchar在mysql中要满足用户最小行长度管制,也就是 65535(64k)十进制,而varchar这类是按数组串特征值来表述的,在mysql中采用uft-8Unicode一位数串挤占四个十进制,因此皮夏涅varchar前述挤占最小长度如下表所示:
1.采用utf-8数组代码集varchar最小长度是(65535-2)/3=21844位数串(少于255个十进制会有2十进制的附加挤占空间开支,因此减2,假如是255下列,则减1)。
2.采用 utf-8mb4Unicode,mysql中采用 utf-8mb4 Unicode一位数串挤占4个十进制,因此 varchar 最小长度是(65535-2)/4=16383 位数串(少于255个十进制会有2十进制的附加挤占空间开支,因此减2,假如是255下列,则减1)。
text的最小管制也是64k个十进制,但其本质是外溢储存,innodb预设只会放置前768十进制在统计数据页中,而余下的统计数据则会储存在外溢段中。text类别的统计数据,将被储存在元统计状态模块以外地方性,但varchar/char将和其它列一同储存在表统计CSV中,更为重要的是,varchar列在外溢的这时候会手动切换为text类别。text统计数据类别事实上Sonbhadra大幅减少统计资料库表文件尺寸。
除此以外,二者还有下列的差别
1、当text做为检索的这时候,要 制定检索的长度,而当varchar充当检索的这时候,可以不用指明。
2、text列不允许拥有预设值
3、当text列的文本很多的这时候,text列的文本会保留三个指针在历史记录中,这个指针指向了磁盘中的一块区域,当对这个表展开select *的这时候,会从磁盘中读取text的值,影响查询的性能,而varchar不能存在这个问题。