假如有一张表有如下字段: c1,c2,c3 这 3 个字段,其中 c3 类型为 json,假如 c3 里只有部分 key 会频繁的更新,但我看更新的时候好像必须得 update 整个 c3 字段,我是不是可以把 c3 里经常更新的 key 再拆为多个 column,单独更新他们,但是不知道同一张表里 json 字段太多了会不会有什么性能上的问题
主要是考虑性能方面的问题,这种设计有没有什么问题
1
xyjincan 2018-10-30 16:37:13 +08:00
m
|
2
lorazepam 2018-10-30 17:20:28 +08:00
```
jsonb_set('[{"f1":1,"f2":null},2,null,3]', '{0,f1}','[2,3,4]', false) [{"f1":[2,3,4],"f2":null},2,null,3] ``` 怎么会 update 整个字段? |
3
imherer OP @lorazepam 刚接触 postgresql,请教下
```` { "guid": "9c36adc1-7fb5-4d5b-83b4-90356a46061a", "name": "Angela Barton", "is_active": true, "company": "Magnafone", "address": "178 Howard Place, Gulf, Washington, 702", "registered": "2009-11-07T08:53:22 +08:00", "latitude": 19.793713, "longitude": 86.513373, "tags": [ "enim", "aliquip", "qui" ]} ```` 假如这一的 json,我只更新 tags 的话 sql 应该怎么写呢?条件是 guid |
4
EchoUtopia 2018-10-30 17:52:04 +08:00 via Android
@lorazepam jsonb_set 完了不是还要赋值回去么?
|
5
imherer OP |
6
xyjincan 2018-10-30 18:13:22 +08:00 via Android
把变动少的,不变的属性拿出来
|
7
n2ex2 2018-10-30 18:17:41 +08:00 via iPhone
肯定不是更新整个字段,不然就不需要 json 类型,用字符串就完了。
|
8
n2ex2 2018-10-30 18:18:54 +08:00 via iPhone
json 操作以前看过有些复杂,如果你的 json 不长的话其实可以不用。
|
9
imherer OP @xyjincan 嗯,我也是想按更新频繁度拆分字段。 就是不知道一张表里 json 类型的字段太多会不会有什么性能上的问题
|
11
n2ex2 2018-10-31 10:36:36 +08:00 via iPhone
|
12
reus 2018-11-19 17:14:33 +08:00
pg 更新一行,是一整行创建一个 tuple 的,所以没有必要分开。
|