gpt4 book ai didi

sql - 如何通过连接性能修复 postgresql 更新?

转载 作者:行者123 更新时间:2023-12-04 08:16:23 25 4
gpt4 key购买 nike

我有名为 node ways 的地理空间表。
我想使用空间连接用 end_node_id 表属性设置 ways 表的 node 列。两个表大约有 100K 数据。

update ways
set
end_node_id = n.node_id
from
ways w
inner join
nodes n
on
st_endpoint(w.shape) = n.shape;
但是这个查询需要很多次。 15 分钟后,我停止了查询。此操作是否有任何性能查询?
更新说明:
Update on ways w (cost=0.00..669909619.43 rows=24567397 width=576)  
-> Nested Loop (cost=0.00..669909619.43 rows=24567397 width=576)
Join Filter: (st_endpoint(w.shape) = n.shape)
-> Seq Scan on ways w (cost=0.00..8960.61 rows=120161 width=564)
-> Materialize (cost=0.00..12200.81 rows=204454 width=52)
-> Seq Scan on nodes n (cost=0.00..9181.54 rows=204454 width=52)

最佳答案

不包括 waysfrom条款!这不符合您的预期。想必,你想要:

update ways w
set end_node_id = n.node_id
from nodes n
where st_endpoint(w.shape) = n.shape;
在您的公式中, waysupdate是与 ways 不同的引用在 from .因此,您的代码正在创建笛卡尔积——这无疑会减慢处理速度。请注意,这与 SQL Server 的行为不同,后者具有类似的语法。

关于sql - 如何通过连接性能修复 postgresql 更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65684460/

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