MySQL 5.7新支持- - - - - - - - - -如何创建Json类型索引

  

下面一起来了解下MySQL 5.7新支持- - - - - - - - - -如何创建Json类型索引,相信大家看完肯定会受益匪浅,文字在精不在多,希望MySQL 5.7新支持- - - - - - - - - -如何创建Json类型索引这篇短内容是你想要的。

1。背景

*,在MySQL 5.7.8中,MySQL支持由RFC 7159定义的本地JSON数据类型,它支持对JSON (JavaScript对象标记)文档中的数据进行有效访问。

*, MySQL会对DML JSON数据自动验证。无效的DML JSON数据操作会产生错误。

,,*优化的存储格式。存储在JSON列中的JSON文档转换为一种内部格式,允许对JSON元素进行快速读取访问。

,,* MySQL Json类型支持通过虚拟列方式建立索引,从而增加查询性能提升。

2。Json索引

,,*创建Json索引表json_key(名称为虚拟列,虚拟表明不占用磁盘空间)

[生成总是与虚拟可以不写,)

,,,,指定获json中取的名字关键

 mysql>, CREATE  TABLE  json_key (
  ,,,,,uid  BIGINT  PRIMARY  KEY  NOT  NULL  AUTO_INCREMENT,
  ,,,,,data  JSON  NOT 空,
  ,,,,,name  VARCHAR (32), GENERATED  ALWAYS  AS  (json_extract(数据,& # 39;. name # 39;美元)),虚拟的,
  ,,,,,)引擎=INNODB  CHARSET=utf8mb4; 

,,*创建虚拟列名称索引,

 mysql>, alter  table  users  add  key (名称);
  Query 好吧,,0,rows  affected (0.05,秒)
  记录:0,,重复:,0,,警告:,0 

,,*插入数据带数据中名称关键(插入数据时需要显示指定非虚拟列)

 mysql>, INSERT  INTO  json_key (uid,数据),SELECT 空,,JSON_OBJECT(& # 39;名字# 39;,,& # 39;汤姆# 39;,,& # 39;性与# 39;,,& # 39;男性# 39;,,& # 39;年龄# 39;,,& # 39;26 & # 39;);
  Query 好吧,,1,row  affected (0.02,秒)
  记录:1,,重复:,0,,警告:,0 

,,*插入数据不带数据中名称关键

 mysql>, INSERT  INTO  json_key (uid,数据),SELECT 空,,JSON_OBJECT(& # 39;性与# 39;,,& # 39;女# 39;,,& # 39;年龄# 39;,,& # 39;29日& # 39;);
  Query 好吧,,1,row  affected (0.01,秒)
  记录:1,,重复:,0,,警告:,0 

,,*查看json_key所有数据

 mysql>, select  *,得到json_key;
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
  | |,uid  data ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, |, name  |
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
  |,,,1,|,{“age":,“26”,,“sex":,“male",,“name":,“tom"}, |,“tom" |
  |,,,2,|,{“age":,“29”,,“sex":,“female"},,,,,,,,,,,,,, |, NULL  |
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
  2,rows  set 拷贝;(0.01,sec) 

3。查询测试

,,*通过json方法查询

 mysql>, explain  select  *,得到json_key  where  json_extract(数据,& # 39;. name # 39;美元),=,& # 39;汤姆# 39;\ G
  * * * * * * * * * * * * * * * * * * * * * * * * * * *,1只row  * * * * * * * * * * * * * * * * * * * * * * * * * * *
  ,,,,,,,,,,,,1
  select_type才能:简单
  ,,,,,,,表:json_key
  ,,分区:零
  ,,,,,,,,类型:所有
  possible_keys:零
  ,,,,,,,,,关键:零
  ,,,,,key_len:零
  ,,,,,,,,,裁判:零
  ,,,,,,,,行:2
  ,,,,过滤:100.00
  ,,,,,,,额外:Using 
  1,row 集,拷贝,1,warning  (0.00, sec) 

,,*通过虚拟列查询

mysql>解释select * from json_key name=& # 39;汤姆# 39;\ G

* * * * * * * * * * * * * * * * * * * * * * * * * * * 1。行* * * * * * * * * * * * * * * * * * * * * * * * * * *

,,,,,1,id:

,select_type:简单的

,,,,表:用户

,,分区:空

,,,,,类型:裁判

possible_keys:名称

,,,,,关键:名称

,,,key_len: 1023

,,,,,裁判:const

,,,,,行:1

,,,过滤:100.00

,,,,null   null

MySQL 5.7新支持- - - - - - - - - -如何创建Json类型索引