几何匹配和更新

时间:2017-08-03 06:26:37

标签: sql postgresql postgis postgresql-9.4

我正在尝试匹配两个表中的几何,并根据匹配更新一个表。但这需要很长时间。

表1

+-------------+----------+-------------+
| Column      | Type     | Modifiers   |
|-------------+----------+-------------|
| id          | bigint   |             |
| jid         | integer  |             |
| geom        | geometry |             |
+-------------+----------+-------------+
Indexes:
    "points_geom_gix" gist (geom)
    "points_jid_idx" btree (jid)

表2

+----------+----------+------------+
| Column   | Type     | Modifiers  |
|----------+----------+------------|
| id       | integer  |            |
| geom     | geometry |            |
+----------+----------+------------+
Indexes:
    "jxn_geom_idx" gist (geom)

我尝试了以下的查询。

UPDATE table1  SET jid = a.id from table2 a WHERE st_equals(geom,a.geom);

UPDATE table1 SET jid = b.id from table1 as a JOIN table2 b on st_equals(a.geoproperty,b.geom);

但这两个查询都耗费了大量时间(小时)。

如果我计算两个表中的匹配几何,它将在几秒钟内给出计数。

UPDATE 我正在使用PostgreSQL 9.5.7和Postgis 2.2.1

1 个答案:

答案 0 :(得分:0)

如果只需要边界框级别比较,则在几何列而不是st_equals上使用“=”,它的速度很快。像a.geom = b.geom。

请参阅此内容,

Link