我有名为node
和ways
的地理空间表。
我想使用空间连接将ways
表的end_node_id
列设置为node
表属性。这两个表约有10万条数据。
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)
ways
中的每一行都必须与nodes
中的 100,000 行进行比较。这需要一些时间,遗憾的是。 - Gordon Linoffwhere created_at::date=current_date
,查询时间会很长。 - bartelomacreated_at >= current_date and created_at < current_date + interval '1 day'
。这样可以让查询使用created_date
上的索引,假设你有一个索引。 - Gordon Linoff