[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不能存在这个问题。

发布于 2022-09-10 12:09:25
收藏
分享
海报
0 条评论
99
目录

    0 条评论

    请文明发言哦~

    忘记密码?

    图形验证码