gpt4 book ai didi

sql - 从大数据集上昂贵的其他表更新值

转载 作者:行者123 更新时间:2023-11-29 13:09:21 24 4
gpt4 key购买 nike

我有一个包含 700 万行的表 (table1),我需要将该表中的一个值复制到另一个表 (table2) 的列中。我曾尝试在只有 50 行的示例表上执行此操作,而且非常昂贵(22 秒)。我错过了什么吗?这是一个相对简单的操作,我不能让它花费数小时/数天的时间来运行。

postgres=# explain analyze update table2 set myvalue=(SELECT myvalue from table1 t1 where table2.id=t1.id);

查询计划

 Update on table2  (cost=0.00..14291311.70 rows=130 width=586) (actual time=22074.702..22074.702 rows=0 loops=1)
-> Seq Scan on table2 (cost=0.00..14291311.70 rows=130 width=586) (actual time=407.754..22073.606 rows=50 loops=1)
SubPlan 1
-> Seq Scan on table1 t1 (cost=0.00..109933.08 rows=4836 width=32) (actual time=264.664..441.460 rows=1 loops=50)
Filter: (table2.id = (id)::text)
Rows Removed by Filter: 737957
Planning time: 0.110 ms
Execution time: 22074.747 ms

最佳答案

带有连接的更新,通常更快:

update table2 
set myvalue = t1.myvalue
from table1 t1
where table2.id=t1.id;

关于sql - 从大数据集上昂贵的其他表更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56938824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com