扫盲 2026.09.27 10:08 65 次浏览 0 条评论

字段text类型说明

MySQL 里的 TEXT 就是专门存大段文字的字段。跟 VARCHAR 最大的区别:VARCHAR 有长度上限,还占行记录空间;TEXT 的数据单独存,行里只留个指针,所以能塞很长的内容。

分四种规格:TINYTEXT 255 字节、TEXT 64KB、MEDIUMTEXT 16MB、LONGTEXT 4GB。一般文章正文用 TEXT 就够,存小说、日志、采集数据直接上 LONGTEXT。

CREATE TABLE article (
  id INT PRIMARY KEY AUTO_INCREMENT,
  title VARCHAR(100),
  content TEXT,        -- 正文,约 64KB,够放几千字
  detail LONGTEXT      -- 超长内容用它
) ENGINE=InnoDB;

-- TEXT 不能整列建索引,要加前缀长度
ALTER TABLE article ADD INDEX idx_content (content(50));

几个容易踩的坑:TEXT 不能设默认值,严格模式下写 DEFAULT 直接报错;排序和 GROUP BY 时走磁盘临时表,比 VARCHAR 慢;建索引必须指定前缀长度,比如 content(50)。还有字符集的问题,utf8mb4 下一个中文占 3 到 4 字节,64KB 实际存不了 6 万多个汉字,估容量时按字节算别按字数算。

说点什么 0

行思随记

欢迎来到:行思随记