位置: 编程技术 - 正文

简单谈谈MySQL5.7 JSON格式检索(简单谈谈设计与市场的关系)

编辑:rootadmin

推荐整理分享简单谈谈MySQL5.7 JSON格式检索(简单谈谈设计与市场的关系),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:简单谈谈对中国电信的认识,简单谈谈你对会计的理解或认识,简单谈谈你对中国国防建设的认识,简单谈谈你曾经静下心来专心读某本书的体会,简单谈谈设计与市场的关系,简单谈谈为什么要入党,简单谈谈设计与市场的关系,简单谈谈你曾经静下心来专心读某本书的体会,内容如对您有帮助,希望把文章链接给更多的朋友!

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

本人做了一个简单测试。

第一步:建立一个包含JSON类型的表:

第二步:初始化数据

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

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

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

简单谈谈MySQL5.7 JSON格式检索(简单谈谈设计与市场的关系)

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

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

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

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

CREATE INDEX name_virtual_index ON json_test(name_virtual);

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

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

总结:

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

浅谈MySQL数据库的备份与恢复 一、MySQL常见的备份方式1.直接拷贝数据库文件(物理拷贝)2.使用mysqldump工具备份3.使用mysqlhotcopy工具备份4.使用mysql的主从同步复制,实现数据实时同步备

Innodb表select查询顺序 今天知数堂一个学生反馈说在优化课中老师讲Innodb是以主键排序存储,读取的时间以主键为顺序读取,但发现个例外,如下:CREATETABLEzst_t1(uidint()NOTNULL

centos 6下安装innodb_ruby innodb_ruby是jeremycole的一个用于分析Innodb相关结构的一个程序,也是非常方便我们研究Innodb的结构工具。所以这里做一个介绍。jeremycolegithub里的分享的项

本文链接地址:https://www.jiuchutong.com/biancheng/349850.html 转载请保留说明!

上一篇:MySQL5.6 数据库主从同步安装与配置详解(Master/Slave)(mysql数据库主键怎么设置)

下一篇:浅谈MySQL数据库的备份与恢复(mysql数据库技术介绍)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络