4

ジオメトリ フィールドを持つテーブルは次のとおりです。

         Table "public.regions"
  Column   |         Type          |
-----------+-----------------------+-
 id        | integer               | 
 parent_id | integer               |
 level     | integer               |
 name      | character varying(55) |
 location  | geometry              |

すべての大陸、国、州、都市のジオメトリを保存しました。これは巨大なテーブルであるため、パフォーマンスを向上させるために、最上位の場所 (大陸など) に基づいてテーブルを分割する必要があります。

geometry(continent) に基づいて既存のテーブルを分割するにはどうすればよいですか? asia、europe、australia という名前の継承テーブルを作成し、contains を使用したクエリに基づいてそれらのテーブルに行を挿入するだけで十分ですか? クエリのパフォーマンスは向上しますか?

たとえば。次のようなクエリを実行しようとしています:

11.562424 48.148679 はミュンヘンのある地点です

EXPLAIN ANALYZE SELECT id, name,level FROM regions WHERE Con​​tains((location),(GeomFromText('Point(11.562424 48.148679)')));

私のコンピューターでは PG で約 500 ミリ秒かかりますが、Oracle では同じクエリに約 200 ミリ秒かかります。

4

0 に答える 0