【发布时间】:2017-08-03 06:26:36
【问题描述】:
我正在尝试匹配两个表中的几何图形并根据匹配更新一个表。但这需要大量时间。
表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);
但是这两个查询都需要大量时间(小时)。
如果我计算两个表中匹配的几何图形,它将在几秒钟内给出计数。
更新 我正在使用 PostgreSQL 9.5.7 和 Postgis 2.2.1
【问题讨论】:
-
表中大约有多少条记录?您是否也注意到其他表的更新性能问题?
-
什么版本的 Postgis?能发帖解释一下吗?包括边界框比较会加快速度吗?
WHERE geom ~= a.geom AND st_equals(geom,a.geom); -
我用版本更新了问题。
标签: sql postgresql postgis postgresql-9.4