Mysql的json函数使用和虚拟列

Mysql的json函数使用和虚拟列,第1张

需要更多的json函数可以访问以下mysql的官方文档

官方文档的地址

过传统的B+树索引即可实现对JSON格式部分属性的快速查询。使用方法是首先创建该虚拟列,然后在该虚拟列上创建索引

释义 :根据json中的某一个键创建一个虚拟的列,新增的时候,不必新增这个虚拟列的数据,会根据json里面的键自动把数据拿过来。如果这个键不存在,也可以创建成功,只不过没有值,不会报错。后期json里面新增这个键得话,还是根据键拿到值。而不必特意的向虚拟列增加值。

alter table ba_bgt_info add v_is_auto varchar(300) generated always AS(manage_categories->"$.isAuto")

在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默认的方式

能正常加索引、特殊用途冗余列、列长度还是和定义类型一样、查询效率上,物理>STORED>VIRTUAL

虚拟列: 一个或多个字段的数据函数处理后的结果集映射成的字段

视图: 一个或多个表依照某个条件组合而成的结果集(相当于一个查询sql语句的结果集映射成的虚拟表)

其本质其实都是以空间换时间

什么是视图?视图是干什么用的?

视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。

通过视图,可以展现基表的部分数据;视图数据来自定义视图的查询中使用的表,使用视图动态生成。

基表: 用来创建视图的表叫做基表base table

因为视图的诸多优点,如下

总而言之,使用视图的大部分情况是为了保障数据安全性,提高查询效率。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11750508.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存