Performance 更新数据库的最有效方法

Performance 更新数据库的最有效方法,performance,postgresql,sql-update,auto-update,Performance,Postgresql,Sql Update,Auto Update,我有一个表,可以随时自动更新(比如每天)。所有更新的字段都是文本类型,可能包含大量数据。我肯定知道的是,数据不会有太大变化。通常最多添加或删除30个字符。 那么,什么更有效率呢?以某种方式合并更改或删除旧数据并检索新数据? 而且,如果合并方式是这样做的话,我应该怎么做呢?是否有任何关键字或其他东西使这更容易和更有效 p.S一般来说,我对数据库是完全陌生的,这是我第一次创建和使用数据库,如果这是一个愚蠢的问题,很抱歉,由于模型的原因,PostgreSQL总是为单个更新中应用的任何更改集写新行。没关

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

p.S一般来说,我对数据库是完全陌生的,这是我第一次创建和使用数据库,如果这是一个愚蠢的问题,很抱歉,由于模型的原因,PostgreSQL总是为单个
更新中应用的任何更改集写新行。没关系,你改变了多少。没有“合并方式”

这类似于(但不同于)删除行并插入新行

因为您的列显然很大,所以它们会很大,这意味着它们会被压缩并在一个单独的表中存储。在
更新
中,如果这些列保持不变,则可以按原样保留这些列,因此
更新
要比
删除
插入
便宜得多。引用

更新
操作期间,未更改字段的值通常为 保持原样;因此,对具有越行值的行进行
更新
,将导致 如果没有任何越界值发生变化,则无
TOAST
成本


如果您的行有很多列,并且只有一些列经常更新,那么使用两个具有1:1关系的独立表可能会有好处。但这是一个极端的情况。

如果可能的话,将字段拆分为其逻辑部分,而不是将其存储为一个大的
文本
blob,这样您就可以只更新实际需要更新的块。试着对数据进行规范化并对其进行结构化。@CraigRinger是的,我稍后会对其进行缩放,但我需要在周五之前使其正常工作,所以现在我将按照我在文章中介绍的方式进行操作。