MySQL版本: 8.0.13

参考的官方文档版本: 8.0

很多人都知道了MySQL从5.7.8开始就已经支持JSON数据格式及相关的API了,官网上(JSON Function Reference) 一章节对相关API提供了详细的阐述。

这里我先初步的列一下官网给出的方法表,8.0版本在5.7.8基础之上丰富了一些方法。

从表中可以看到大量的JSON API被支持,几乎可以满足各种各样的JSON操作需求。更加详细的使用方法和注意事项这里就不做过多的赘述。

JSON是大多数NOSQL引擎所使用的数据结构,既然MySQL支持了JSON,那么从NoSQL角度来看,我们可能可以设计出这样的只有两个字段的MySQL表

那么问题来了,希望针对JSON的name做索引怎么办?

其实MySQL支持JSON的同时,也支持了将JSON中的列虚拟成MySQL的列来完成索引的创建。

下面就来具体实现一下。

插入一条数据

按照 name查询,查看索引使用情况

此时,这个查询并没有走上索引。给 name加索引,

再看下索引

此时发现这个查询使用了 idx_name这个索引。

那么, where条件不使用 name这个虚拟列而是使用 data中的 name呢?试一下

发现,和虚拟列 name一样,还是可以走 idx_name 这个索引

由此可见,MySQL的NoSQL功能还是很完整和强大的,转念一想,连MySQL都叛教去了NoSQL,传统关系型数据库"哇的一声"哭出来有木有!!!