您当前的位置:首页 > 新闻中心 > 科技资讯

MySQL最佳实践 如何索引JSON字段

时间:2017-12-22 11:45:55  

  MySQL从5.7.8起开始支持JSON字段,这极大的丰富了MySQL的数据类型。也方便了广大开发人员。但MySQL并没有提供对JSON对象中的字段进行索引的功能,至少没有直接对其字段进行索引的方法。本文将介绍利用MySQL5.7中的虚拟字段的功能来对JSON对象中的字段进行索引。

  示例数据

  我们将基于下面的JSON对象进行演示。

  表的基本结构

  如果只是基于上面的表的结构我们是无法对JSON字段中的Key进行索引的。接下来我们演示如何借助虚拟字段对其进行索引。

  增加虚拟字段

  虚拟列语法如下:

  在MySQL5.7中,支持两种GeneratedColumn,即VirtualGeneratedColumn和StoredGeneratedColumn,前者只将GeneratedColumn保存在数据字典中(表的元数据),并不会将这一列数据持久化到磁盘上;后者会将GeneratedColumn持久化到磁盘上,而不是每次读取的时候计算所得。很明显,后者存放了可以通过已有数据计算而得的数据,需要更多的磁盘空间,与VirtualColumn相比并没有优势,因此,MySQL5.7中,不指定GeneratedColumn的类型,默认是VirtualColumn。

  如果需要StoredGeneratedGolumn的话,可能在VirtualGeneratedColumn上建立索引更加合适,一般情况下,都使用VirtualGeneratedColumn,这也是MySQL默认的方式。

  加完虚拟列的建表语句如下:

  Note:利用操作符-»来引用JSON字段中的KEY。在本例中字段names_virtual为虚拟字段,我把它定义成不可以为空。在实际的工作中,一定要集合具体的情况来定。因为JSON本身是一种弱结构的数据对象。也就是说的它的结构不是固定不变的。

  我们插下数据

  查看表里的数据

  查看表Players的字段

来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
油坊店:毛竹“打一针” “多子”又“壮孙”
油坊店:毛竹“打一针
相关文章
    无相关信息
栏目更新
栏目热门