JSON

腾讯云数据库团队:MySQL5.7 JSON实现简单介绍(2)

字号+ 作者:H5之家 来源:H5之家 2017-08-14 18:03 我要评论( )

{ “type”:”Feature”, “properties”:{ “TO_ST”:”0”, “BLKLOT”:”0001001”, “STREET”:”UNKNOWN”, “FROM_ST”:”0”, “LOT_NUM”:”001”, “ST_TYPE”:null, “ODD_EVEN”:”E”, “BLOCK_NUM”:

{
“type”:”Feature”,
“properties”:{
“TO_ST”:”0”,
“BLKLOT”:”0001001”,
“STREET”:”UNKNOWN”,
“FROM_ST”:”0”,
“LOT_NUM”:”001”,
“ST_TYPE”:null,
“ODD_EVEN”:”E”,
“BLOCK_NUM”:”0001”,
“MAPBLKLOT”:”0001001”
}
}

使用:

ALTER TABLE features ADD feature_street VARCHAR(30) AS (JSON_UNQUOTE(feature->”$.properties.STREET”));
ALTER TABLE features ADD INDEX (feature_street);

两个步骤。能够对feature列中properties键值下的STREET键(`feature->"$.properties.STREET"`)创建索引。

当中,`feature_street`列就是新加入的虚拟列。

之所以取名虚拟列。是由于与它相应的另一个存储列(stored column)。它们最大的差别为虚拟列仅仅改动数据库的metadata,并不会存储真实的数据在硬盘上,读取过程也是实时计算的方式。而存储列会把表达式的列存储在硬盘上。

两者使用的场景不一样。默认情况下通过表达式生成的列为虚拟列。 这样虚拟列的加入和删除都会很快。而在虚拟列上建立索引跟传统的建立索引的方式并没有差别。会提高虚拟列读取的性能,减慢总体插入的性能。

虚拟列的特性结合JSON的路径表达式。能够方便的为用户提供高效的键值索引功能。 #### JSON比較与排序 JSON值能够使用=, <, <=, >, >=, <>, !=, <=>等操作符。REATEST`, `LEAST`等操作符如今还不支持。JSON值使用的两级排序规则。第一级基于JSON的类型。类型不同的使用每一个类型特有的排序规则。 JSON类型依照优先级从高到低为

BLOB
BIT
OPAQUE
DATETIME
TIME
DATE
BOOLEAN
ARRAY
OBJECT
STRING
INTEGER, DOUBLE
NULL
“`
优先级高的类型大,不用再进行其它的比較操作;假设类型同样。每一个类型按自己的规则排序。

详细的规则例如以下:

不论什么JSON值与SQL的NULL常量比較,得到的结果是UNKNOWN。

对于JSON值和非JSON值的比較。依照一定的将非JSON值转化为JSON值,然后依照以上的规则进行比較。

小结

本文主要介绍了MySQL在5.7.7之后引入的原生JSON支持的特性,说明了引入JSON类型的优点,并结合详细的演示样例介绍了MySQL在JSON类型上对外的接口以及引入的新语法规则。此外,还重点介绍了JSON在硬盘上的存储结构,简要分析了这样的存储结构的优势和不足。最后还介绍了JSON的索引原理,以及比較和排序规则。

相信理解了本文介绍的内容,关于JSON文中没有提到的部分内容也较easy理解。

相关推荐

MySQL内核深度优化

MySQL数据库的高可用性分析

阅读原文。很多其它技术干货,请訪问腾云阁。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • json2.js源码解读

    json2.js源码解读

    2017-05-23 09:01

  • Xml、Json序列化

    Xml、Json序列化

    2017-05-04 10:00

  • 关注站长和分享互联网创业及VIP资源干货教程的新媒体营销博客

    关注站长和分享互联网创业及VIP资源干货教程的新媒体营销博客

    2017-05-04 08:08

  • Android快速开发教程第一季

    Android快速开发教程第一季

    2017-03-29 15:00

网友点评