在5.7版本之后 mysql引入新类型“json”
但是在数据量大的情况加 直接搜索json中的内容会造成慢sql
于是便想办法如何给json加上索引
但是json类型本身是不支持索引的
于是另辟蹊径 发现了一个新特性
虚拟字段
首先对旧表做新增字段处理
加入虚拟字段 虚拟字段的值来源为json中数据
alter table 表名 add 新增虚拟字段名 VARCHAR(20) GENERATED ALWAYS AS (`data` ->> '$.数据来源')
加完之后我们得到了一个新字段 直接给新字段加索引就可以了
CREATE INDEX `idc_idx` ON `表名`(`虚拟字段名`);
友情提示:
如果你的数据库设计规范 可避免这样的问题
能重构还是需要重构才可