MySQL 8.0中的JSON增强

本文介绍了MySQL 8.0中对JSON数据类型的增强,包括自动验证、优化存储和快速访问。重点讨论了JSON操作如索引、比较排序、转换和聚合,以及如何通过虚拟列和多值索引提高查询性能。同时提醒注意JSON大小限制及其在实际应用中的注意事项。
摘要由CSDN通过智能技术生成

点击上方"蓝字"

关注我们,享更多干货!

现在很多应用环境中都能看到JSON灵活的影子。各阶段数据层次的递归层次,能很好的分辨。一直对MySQL的JSON很期待的,最近才有时间研究一下。

JSON了解

JSON就是一串字符串,只不过元素会使用特定的符号标注。比如:

  • {} 双括号表示对象

  • [] 中括号表示数组

  • “” 双引号内是属性或值

  • : 冒号表示后者是前者的值

关系型数据库实现JSON难度在于,关系型数据库需要定义数据库和表结构。为了应对这一点,从MySQL 5.7开始,MySQL支持了JavaScript对象表示(JavaScriptObject Notation,JSON) 数据类型。之前,这类数据不是单独的数据类型,会被存储为字符串。新的JSON数据类型提供了自动验证的JSON文档以及优化的存储格式。


MySQL里JSON文档以二进制格式存储,它提供以下功能:

  • 自动验证存储在JSON列中的JSON文档。无效文档产生错误。

  • 优化的存储格式。存储在JSON列中的JSON文档被转换为允许快速读取访问文档元素的内部格式。二进制格式存储的JSON值。

  • 对文档元素的快速读取访问。当服务器再次读取JSON文档时,不需要重新解析文本获取该值。通过键或数组索引直接查找子对象或嵌套值,而不需要读取文档中的所有值。

  • 存储JSON文档所需的空间大致与LONGBLOB或LONGTEXT相同。

  • 存储在JSON列中的任何JSON文档的大小都仅限于max_allowed_packet系统变量的值。

  • MySQL 8.0.13之前,JSON列不能有非NULL的默认值。

JSON操作

数据保存到MySQL,操作方面都提供哪些支持?目前MySQL 8.0版本的的JSON总共支持32个普通函数和2个空间函数:

1. 索引:
  • JSON列,像其他二进制类型的列一样,不直接索引;相反,您可以在生成的列上创建索引,从JSON列中提取标量值。有关详细示例,请参见为生成的列建立索引以提供JSON列索引。

  • MySQL优化器还会在匹配JSON表达式的虚拟列上寻找兼容的索引。

  • 在MySQL 8.0.17及以后版本中,InnoDB存储引擎支持JSON数组上的多值索引。看到多值索引。

  • MySQL NDB Cluster 8.0支持J

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值