1

要旨インデックスに問題があります。'geog'(geography、multipolygon)columnyのテーブル'country'があります。このコラムにも要点索引があります。2行のテーブル(各「geog」は約5MB)に対するST_CoveredBy()を使用したこの単純なクエリには、13秒かかります(クエリ結果は正しいです)。

select c."ID" from gis.country c where ST_CoveredBy(ST_GeogFromText('SRID=4326;POINT(8.4375 58.5791015625)'), c."geog") =true

インデックスを削除すると、クエリにも13秒かかりました。

私がすでにしたこと:

編集

クエリプラン-

Index Scan using sindx_country_geography_col1 on country c  (cost=0.00..8.52 rows=1 width=4)
  Index Cond: ('0101000020E61000000000000000E0204000000000204A4D40'::geography && "geog")
  Filter: _st_covers("geog", '0101000020E61000000000000000E0204000000000204A4D40'::geography)
4

1 に答える 1

2

行が 2 つしかないテーブルに対してインデックス クエリを実行しても、何のメリットもありません。インデックスの利点は、クエリする行が数百行以上ある場合にのみ発揮されます。

2 つの非常に詳細な国のマルチポリゴンがあると思います。これらをグリッドに分割してパフォーマンスを向上させる方法があります。国をグリッドに分割する方法は、(1) 関心のある領域の密度 (クエリを実行する可能性が最も高い場所)、および (2) マルチポリゴンの複雑さまたは頂点の密度に基づく必要があります。

于 2012-05-21T23:11:49.983 に答える