
假如有一张表有如下字段: 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 的,所以没有必要分开。 |