我有一张不时自动更新的表格(比如每天)。所有更新的字段都是 type TEXT
,并且可能有很多数据。我绝对知道的是,数据不会有太大变化。通常最多添加或删除 30 个字符。那么什么会更有效率呢?以某种方式合并更改或删除旧数据并检索新数据?而且,如果合并方式是这样做的方式,我应该怎么做?是否有任何关键字或其他东西可以使这更容易和更有效?
PS我对数据库完全陌生,这是我第一次创建和使用数据库,如果这是一个愚蠢的问题,很抱歉
我有一张不时自动更新的表格(比如每天)。所有更新的字段都是 type TEXT
,并且可能有很多数据。我绝对知道的是,数据不会有太大变化。通常最多添加或删除 30 个字符。那么什么会更有效率呢?以某种方式合并更改或删除旧数据并检索新数据?而且,如果合并方式是这样做的方式,我应该怎么做?是否有任何关键字或其他东西可以使这更容易和更有效?
PS我对数据库完全陌生,这是我第一次创建和使用数据库,如果这是一个愚蠢的问题,很抱歉
由于MVCC模型,PostgreSQL总是为单个UPDATE
. 没关系,你改变多少。没有“合并方式”。
它类似于(但不一样)删除行并插入新行。
由于您的列显然很大,它们将被TOASTed,这意味着它们被压缩并离线存储在单独的表中。在 anUPDATE
中,如果这些列保持不变,则可以按原样保留,因此它UPDATE
比 toDELETE
和便宜得多INSERT
。在这里引用手册
在
UPDATE
操作期间,未更改字段的值通常保持原样;因此,如果没有任何外线值发生变化,则具有外线值UPDATE
的一行不会产生任何TOAST
成本。
如果您的行有很多列并且只有一些列得到很多更新,那么拥有两个具有 1:1 关系的单独表可能会有所帮助。但这是一个极端的例子。