Mysql5.7.9原生JSON格式支持

Mysql5.7.9原生JSON格式支持

创建表

create table news (uid int auto_increment, data json, primary key(uid))engine innodb;

插入数据

insert into news values (NULL,'{"name":"tester","mail":"test@gmail.com","address":"Shangahai"}')

插入数据不是Json格式,会报以下错

insert into news values(NULL,'test');
Error Code: 3140.Invalid JSON text: "Invalid value." at position 1 in value (or column) 'test'

新内置函数,高效地处理JSON字符,不需要遍历所有数据查找。

select json_extract(data, '$.name'),json_extract(data,'$.address') from news where json_extract(data, '$.name') = 'David';

114217_aFqb_1412997.png


虚拟列功能,通过传统的B+树索引即可实现对JSON格式部分属性的快速查询

加虚拟列

ALTER TABLE user ADD user_name varchar(50) GENERATED ALWAYS AS (json_extract(data,'$.name')) VIRTUAL;

加索引

alter table user add index idx_username (user_name);

和普通列查询一样

select * from user where user_name='David'


转载于:https://my.oschina.net/xinson/blog/520535

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值