加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql入门简单谈谈MySQL5.7 JSON格式检索

发布时间:2020-12-12 02:35:55 所属栏目:MySql教程 来源:网络整理
导读:《Mysql入门简单谈谈MySQL5.7 JSON格式检索》要点: 本文介绍了Mysql入门简单谈谈MySQL5.7 JSON格式检索,希望对您有用。如果有疑问,可以联系我们。 MYSQL入门 MySQL5.7版本开始支持JSON格式,在创建表时,可以指定列表的数据类型为JSON,但是如安在JSON格式上

《Mysql入门简单谈谈MySQL5.7 JSON格式检索》要点:
本文介绍了Mysql入门简单谈谈MySQL5.7 JSON格式检索,希望对您有用。如果有疑问,可以联系我们。

MYSQL入门MySQL5.7版本开始支持JSON格式,在创建表时,可以指定列表的数据类型为JSON,但是如安在JSON格式上创建索引呢??

MYSQL入门本人做了一个简单测试.

MYSQL入门第一步:建立一个包括JSON类型的表:

MYSQL入门
CREATE TABLE json_test` (
 id` int (8) NOT NULL AUTO_INCREMENT,content` json NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

MYSQL入门第二步:初始化数据

MYSQL入门
insert into json_test(content) value( '{"name":"zhangsan","age":18}' );
insert into json_test(content) value( '{"name":"lisi","age":19}' );
insert into json_test(content) value( '{"name":"wangwu","age":20}' );

MYSQL入门第三步:查询JSON类列的数据

MYSQL入门select json_extract(content,? '$.name' )? from json_test? where json_extract(content,? '$.name' )= "zhangsan" ;

MYSQL入门通过expain分析改查询语句,发现其走全表扫描

MYSQL入门

MYSQL入门在网上查询资料,得知如果要在JSON列上进行检索,需要对检索的key创建虚拟列,然后再虚拟列上创建索引

MYSQL入门第四步:在content列上,对"name"建立虚拟列

MYSQL入门ALTER TABLE json_test? ADD name_virtual? varchar (32) GENERATED ALWAYS? AS (json_extract(content,? '$.name' )) VIRTUAL;

MYSQL入门第五步:对虚拟列创建索引

MYSQL入门CREATE INDEX name_virtual_index? ON json_test(name_virtual);

MYSQL入门再次做查询( 注,where条件需要使用虚拟列来进行检索,如果直接用JSON列比拟,还是会走全表扫描 )

MYSQL入门explain? select json_extract(content,? '$.name' )? from json_test? where name_virtual= "zhangsan" G

MYSQL入门

MYSQL入门总结:

MYSQL入门其实MySQL通过一种空间换时间的做法,类似创建一个触发器,把JSON列上的数据冗余存储到虚拟列上,比拟的时候通过走虚拟列的索引,再定位到实际数据.

编程之家PHP培训学院每天发布《Mysql入门简单谈谈MySQL5.7 JSON格式检索》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读