MySQL 实战:如何正确使用 JSON 字段?

一、为什么 MySQL 要引入 JSON 字段?

在互联网业务中,经常会遇到以下情况:

  • 字段属性不固定(如商品属性、用户画像标签等)
  • 结构会随着业务变化而变化,不适合频繁修改表结构
  • 希望兼顾查询能力和灵活性

MySQL 从 5.7 版本开始原生支持 JSON 类型,提供了结构化存储、自动校验、丰富查询函数等能力,用于解决传统 text/varchar 存储 JSON 的不足。


二、JSON 字段有哪些特点?

1. 存储格式是二进制(不是纯文本)

  • MySQL 内部会将 JSON 数据解析为 binary JSON,查询更快。
  • 插入时会进行 语法校验,不是合法 JSON 会报错。

2. 可索引,但有限制

MySQL 给 JSON 字段建立索引有两种方式:

方式 1:生成列(Generated Column)+ 索引

ALTER TABLE user
ADD COLUMN age_int INT GENERATED ALWAYS AS (json_extract(profile, '$.age')) STORED,
ADD INDEX idx_age(age_int);

这是最常见、最稳定的用法。

方式 2:MySQL 8.0 的功能索引(Functional Index)

CREATE INDEX idx_city 
ON user ((json_unquote(json_extract(profile, '$.city'))));

三、JSON 字段常用操作

🔒 点击解锁完整内容


次阅读

扫描下方二维码,关注公众号:程序进阶之路,实时获取更多优质文章推送。


扫码关注

评论