全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

简单谈谈MySQL5.7 JSON格式检索

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

本人做了一个简单测试。

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

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

第二步:初始化数据

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}' );

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

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

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

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

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

ALTER TABLE json_test  ADD name_virtual  varchar (32) 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  # 5.7  # JSON  # 详解Mysql中的JSON系列操作函数  # MySQL操作之JSON数据类型操作详解  # mysql全面解析json/数组  # Mysql怎么存储json格式数据详解  # PHP连接MySQL数据库并以json格式输出  # MySQL5.7 JSON类型使用详解  # Mysql如何对json数据进行查询及修改  # MybatisPlus如何处理Mysql的json类型  # Mysql5.7中JSON操作函数使用说明  # mysql 如何使用JSON_EXTRACT() 取json值  # mysql的json处理实现  # 要在  # 然后再  # 建立一个  # 第二步  # 创建一个  # 人做  # 第三步  # 第四步  # 第五步  # 在网上  # 如何在  # KEY  # PRIMARY  # content 


相关文章: PHP正则匹配日期和时间(时间戳转换)的实例代码  如何用低价快速搭建高质量网站?  设计网站制作公司有哪些,制作网页教程?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  制作门户网站的参考文献在哪,小说网站怎么建立?  建站之星Pro快速搭建教程:模板选择与功能配置指南  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  大型企业网站制作流程,做网站需要注册公司吗?  宝塔新建站点报错如何解决?  建站之星代理平台如何选择最佳方案?  建站之星备案是否影响网站上线时间?  ,交易猫的商品怎么发布到网站上去?  如何选择高效便捷的WAP商城建站系统?  公司门户网站制作流程,华为官网怎么做?  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  网站制作价目表怎么做,珍爱网婚介费用多少?  如何撰写建站申请书?关键要点有哪些?  内网网站制作软件,内网的网站如何发布到外网?  上海网站制作开发公司,上海买房比较好的网站有哪些?  江苏网站制作公司有哪些,江苏书法考级官方网站?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  如何通过主机屋免费建站教程十分钟搭建网站?  如何选择适配移动端的WAP自助建站平台?  已有域名和空间如何搭建网站?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  制作企业网站建设方案,怎样建设一个公司网站?  大连网站设计制作招聘信息,大连投诉网站有哪些?  如何通过.red域名打造高辨识度品牌网站?  建站VPS能否同时实现高效与安全翻墙?  广德云建站网站建设方案与建站流程优化指南  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  网站制作服务平台,有什么网站可以发布本地服务信息?  如何确保西部建站助手FTP传输的安全性?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何在自有机房高效搭建专业网站?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  c# 服务器GC和工作站GC的区别和设置  专业网站建设制作报价,网页设计制作要考什么证?    网站微信制作软件,如何制作微信链接?  制作网站的基本流程,设计网站的软件是什么?  如何用PHP快速搭建CMS系统?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  制作国外网站的软件,国外有哪些比较优质的网站推荐?  如何挑选最适合建站的高性能VPS主机?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  如何快速查询网站的真实建站时间? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。