2つのテーブルのジオメトリを一致させ、一致に基づいて1つのテーブルを更新しようとしています。しかし、これは膨大な時間を要しています。ジオメトリの照合と更新
表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 あなただけのジオメトリ列の代わりに、ST_Equalsでは、その高速の上のボックスのレベル比較を使用する「=」バウンディング必要であれば、私は、PostgreSQL 9.5.7および2.2.1のPostGIS
、同様にこの参照してください?他のテーブルの更新パフォーマンスの問題も気付いていますか? –
Postgisのどのバージョンですか?あなたは説明を投稿できますか?バウンディングボックスの比較を含めてスピードアップしていますか? 'どこでgeom〜= a.geomとst_equals(geom、a.geom); ' –
私はバージョンで質問を更新しました。 –