静态网站系统,运维工程师是干嘛的,重庆seo代理价格,白云区网络推广概述MySQL从5.7.8起开始支持JSON字段#xff0c;这极大的丰富了MySQL的数据类型。也方便了广大开发人员。但MySQL并没有提供对JSON对象中的字段进行索引的功能#xff0c;至少没有直接对其字段进行索引的方法。本文将介绍利用MySQL 5.7中的虚拟字段的功能来对JSON对象中的字段…概述MySQL从5.7.8起开始支持JSON字段这极大的丰富了MySQL的数据类型。也方便了广大开发人员。但MySQL并没有提供对JSON对象中的字段进行索引的功能至少没有直接对其字段进行索引的方法。本文将介绍利用MySQL 5.7中的虚拟字段的功能来对JSON对象中的字段进行索引。示例数据我们将基于下面的JSON对象进行演示。表的基本结构如果只是基于上面的表的结构我们是无法对JSON字段中的Key进行索引的。接下来我们演示如何借助虚拟字段对其进行索引。增加虚拟字段虚拟列语法如下在MySQL 5.7中支持两种Generated Column即Virtual Generated Column和Stored Generated Column前者只将Generated Column保存在数据字典中(表的元数据)并不会将这一列数据持久化到磁盘上后者会将Generated Column持久化到磁盘上而不是每次读取的时候计算所得。很明显后者存放了可以通过已有数据计算而得的数据需要更多的磁盘空间与Virtual Column相比并没有优势因此MySQL 5.7中不指定Generated Column的类型默认是Virtual Column。如果需要Stored Generated Golumn的话可能在Virtual Generated Column上建立索引更加合适一般情况下都使用Virtual Generated Column这也是MySQL默认的方式。加完虚拟列的建表语句如下Note: 利用操作符-» 来引用JSON字段中的KEY。在本例中字段names_virtual为虚拟字段我把它定义成不可以为空。在实际的工作中一定要集合具体的情况来定。因为JSON本身是一种弱结构的数据对象。也就是说的它的结构不是固定不变的。我们插入数据查看表里的数据查看表Players的字段我们看到虚拟字段names_virtual的类型是VIRTUAL GENERATED。MySQL只是在数据字典里保存该字段元数据并没有真正的存储该字段的值。这样表的大小并没有增加。我们可以利用索引把这个字段上的值进行物理存储。在虚拟字段上加索引再添加索引之前让我们先看下面查询的执行计划添加索引再执行上面的查询语句我们将得到不一样的执行计划小结本文介绍了如何在MySQL 5.7中保存JSON文档。为了高效的检索JSON中内容我们可以利用5.7的虚拟字段来对JSON的不同的KEY来建索引。极大的提高检索的速度。