ジオメトリ フィールドを持つテーブルは次のとおりです。
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 Contains((location),(GeomFromText('Point(11.562424 48.148679)')));
私のコンピューターでは PG で約 500 ミリ秒かかりますが、Oracle では同じクエリに約 200 ミリ秒かかります。