MySQL的json类型在哪些场景下会用到

MySQL的json类型在哪些场景下会用到,第1张

1.可以直接过滤记录

select * from t where js->'$.a'=100

避免了要将所有记录都读取出来,在客户端进行过滤。

2.可以直接update,而无须先读取

update t set js=json_set(js,'$.a',js->'$.a'+1) where id=1

单条原子更新

update t,t1 set t.js=json_merage(t.js,t1.js) where t.id=t1.id

跨表更新

3.可以在一条SQL中完成多条纪录的修改!

update t set js=json_set(js,'$.a',123) where id in(1,2)

没有原生的支持,这个是很难实现的。

4.通过json类型,完美的实现了表结构的动态变化

除了一般意义上的增加表字段,还包括嵌套其他对象与数组

update t set js=json_array_append(js,'$.sonAry',123) where id =1

增加一个子节点到sonAry中,无须子表。

5.通过计算生成列在json上建立索引

CREATE TABLE j1 (

  id int(11) NOT NULL,

  js json NOT NULL,

  s varchar(45) CHARACTER SET utf8mb4 NOT NULL,

  a int(11) GENERATED ALWAYS AS (json_extract(js,'$.a')) STORED,

  PRIMARY KEY (id),

  KEY i_a (a)

)

通过a这个生成列(json_extract(js,'$.a'))上建立索引,

可以利用mysql的索引来快速定位。

json_extract还可利用path的通配符,发掘更多类型索引。

甚至还可利用JSON_CONTAINS/JSON_CONTAINS_PATH来建立索引。

这里可以组合出很多


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

原文地址: http://outofmemory.cn/zaji/7326356.html

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

发表评论

登录后才能评论

评论列表(0条)

保存