我有一个multipolygon the_geom字段的表。一些多面体非常详细,查询运行缓慢,所以我用st_simplify_preserve_topology简化了the_geom。那部分是成功的,但现在我正在尝试用新的替换旧的the_geom字段,但查询的挂起时间比我想象的要长。
这是我第一次跑的,它在大约60秒内跑得很快。
SELECT ST_Multi(ST_SimplifyPreserveTopology(the_geom,0.005)) as fwz_simple FROM fwz;
然后,当我尝试更新表格时,它会在等待约30分钟后运行并且永远不会完成。
UPDATE fwz SET the_geom = subquery.the_geom FROM (SELECT ST_Multi(ST_SimplifyPreserveTopology(the_geom,0.005)) as fwz_simple FROM fwz) as subquery;
查询是否知道将几何放在整个表的上下文中的哪个位置?换句话说,UPDATE语句如何知道哪个名称等字段与几何对齐?那是什么导致了延迟?
感谢您的任何帮助。如果需要,我当然可以提供更多细节。
对于表中的每一行,您将使用子查询中的每个简化几何更新几何。最后,所有几何都是相同的(子查询中的最后一个)。
您可以跳过整个子查询并直接处理每个行几何:
UPDATE fwz
SET the_geom = ST_Multi(ST_SimplifyPreserveTopology(the_geom,0.005));