首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL中大表的更新时间

PostgreSQL中大表的更新时间
EN

Stack Overflow用户
提问于 2020-12-14 02:47:10
回答 1查看 50关注 0票数 0

我有一个关于在一个大约8到10 to大小的大表上更新的性能问题。我有一个任务,我应该从一个大约有430万行的表中检测不同的值,并将它们插入到某个表中。这部分并不是真正的问题,但它是随后的更新。因此,我需要根据我导入的表中创建的行的id来更新一些列。我正在执行的查询的一个示例是:

代码语言:javascript
复制
UPDATE billinglinesstagingaws as s
SET product_id = p.id
FROM product AS p
WHERE p.key=(s.data->'product'->>'sku')::varchar(75)||'-'||(s.data->'lineitem'->>'productcode')::varchar(75) and cloudplatform_id = 1

如前所述,临时表的大小约为430万行,大小为8-10 it,从查询中可以看出,它有一个JSONB字段,而product表大约有1500行。这大约需要12分钟,我真的不确定这是否可以,我真的想知道,我可以做些什么来加快速度。没有外键约束,只有两个列的唯一约束。临时表上没有索引。我附加了查询的查询计划,所以任何建议都会很有帮助。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-12-14 02:51:19

对于评论来说,这有点太长了。

更新表中的430万行将需要一些时间。更新需要时间,因为数据库的ACID属性要求每次更新都要将某些内容提交到磁盘--通常是日志记录。这还不包括读取记录、更新索引和其他开销的时间。

因此,每秒大约17,000次更新并不是那么糟糕。

可能有一些方法可以加快查询速度。但是,您可以将这些描述为新行。这让我想知道在创建表时是否可以只插入正确的值。您是否可以在插入过程中查找适当的值,而不是在以后的update中查找

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65279335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档