TEXT类型一般分为 TINYTEXT(255长度)、TEXT(65535)、 MEDIUMTEXT(int最大值16M),和LONGTEXT(long最大值4G)这四种,它被用来存储非二进制字符集,二进制字符集使用blob类型的字段来存储。

对于text列,插入时MySQL不会对它进行填充,并且select时不会删除任何末尾的字节。

如果text列被作为索引,则在它的内容后面添加空格时,会出现duplicate key错误,也就是说,如果我们定义了一个作为索引的text字段,它的值是'a',则不能定义一个值为'a '的记录,因为这样会产生冲突。

对text列进行排序的时候,决定顺序的字符个数是由参数max_sort_length来决定的

text和varchar的区别

SET max_sort_length=1000;
SELECT id,comment FROM table ORDER BY comment;

在大多数情况下,我们可以把text视为varchar字段,但是这两个字段类型在存储字符大小上有一些区别:

varchar在mysql中必须满足最大行宽度限制,也就是 65535(64k)字节,而varchar本身是按字符串个数来定义的,在mysql中使用uft-8字符集一个字符占用三个字节,所以单表varchar实际占用最大长度如下:
    1.使用utf-8字符编码集varchar最大长度是(65535-2)/3=21844个字符(超过255个字节会有2字节的额外占用空间开销,所以减2,如果是255以下,则减1)。
    2.使用 utf-8mb4字符集,mysql中使用 utf-8mb4 字符集一个字符占用4个字节,所以 varchar 最大长度是(65535-2)/4=16383 个字符(超过255个字节会有2字节的额外占用空间开销,所以减2,如果是255以下,则减1)。

text的最大限制也是64k个字节,但是本质是溢出存储,innodb默认只会存放前768字节在数据页中,而剩余的数据则会存储在溢出段中。text类型的数据,将被存储在元数据表之外地方,但是varchar/char将和其他列一起存储在表数据文件中,值得注意的是,varchar列在溢出的时候会自动转换为text类型。text数据类型实际上将会大幅度增加数据库表文件尺寸。

除此之外,二者还有以下的区别

1、当text作为索引的时候,必须 制定索引的长度,而当varchar充当索引的时候,可以不用指明。

2、text列不允许拥有默认值

3、当text列的内容很多的时候,text列的内容会保留一个指针在记录中,这个指针指向了磁盘中的一块区域,当对这个表进行select *的时候,会从磁盘中读取text的值,影响查询的性能,而varchar不会存在这个问题。

最新文章

  1. MFC双缓存技术代码
  2. 使用SVN时出现的文件缺失问题
  3. 获取登陆ip
  4. 【UML】如何看Android的UML图
  5. JAVA & JSON详解
  6. POJ 1151 Atlantis 线段树求矩形面积并 方法详解
  7. 解决页面插入HTML代码后错位(HTML代码里的标签不完整导致错位)
  8. 【BZOJ】【1067】 【SCOI2007】降雨量
  9. Java 源码学习线路————_先JDK工具包集合_再core包,也就是String、StringBuffer等_Java IO类库
  10. JSON 格式的转换: 数组、字符串、List集合、DataTable,实体对象
  11. Codeforces 510B Fox And Two Dots 【DFS】
  12. C语言static 具体分析
  13. CopyOnWriteArrayList集合排序异常问题
  14. web3.js
  15. NTT板子
  16. 【搬运工】linux下创建用户(一)
  17. 使用后台的limit 控制每页的容量
  18. 关于数据安全RSA,MD5,TOKEN
  19. Odoo作为后端时如何返回数据给webapp、移动端app
  20. Swiper测试

热门文章

  1. activate-power-mode安装与设置
  2. Maven打包成可执行JAR(带依赖包)
  3. Vs code 下设置python tasks.json
  4. mysql查看表结构命令,如下:
  5. 时间格式_java
  6. 利用jwt生成token,用于http请求身份验证
  7. 在论坛中出现的比较难的sql问题:7(子查询 判断某个字段的值是否连续)
  8. 一款结合nmap及mascan还有shodan的扫描脚本
  9. Java基础加强-类加载器
  10. MYSQL的B+Tree索引树高度如何计算