1

我有一张不时自动更新的表格(比如每天)。所有更新的字段都是 type TEXT,并且可能有很多数据。我绝对知道的是,数据不会有太大变化。通常最多添加或删除 30 个字符。那么什么会更有效率呢?以某种方式合并更改或删除旧数据并检索新数据?而且,如果合并方式是这样做的方式,我应该怎么做?是否有任何关键字或其他东西可以使这更容易和更有效?

PS我对数据库完全陌生,这是我第一次创建和使用数据库,如果这是一个愚蠢的问题,很抱歉

4

1 回答 1

3

由于MVCC模型,PostgreSQL总是单个UPDATE. 没关系,你改变多少。没有“合并方式”。

它类似于(但不一样)删除行并插入新行。

由于您的列显然很大,它们将被TOASTed,这意味着它们被压缩并离线存储在单独的表中。在 anUPDATE中,如果这些列保持不变,则可以按原样保留,因此它UPDATE比 toDELETE和便宜得多INSERT。在这里引用手册

UPDATE操作期间,未更改字段的值通常保持原样;因此,如果没有任何外线值发生变化,则具有外线值UPDATE的一行不会产生任何TOAST成本。

如果您的行有很多列并且只有一些列得到很多更新,那么拥有两个具有 1:1 关系的单独表可能会有所帮助。但这是一个极端的例子。

于 2013-05-21T20:25:55.727 回答