2017-05-11 7 views
0
Select COUNT(*) from indiahighway_ref where (ST_DWithin(ST_Transform(indiahighway_ref.geom,2163),ST_Transform(ST_GeomFromText('POINT(73.919595 18.5622609)', 4326),2163),500)) 

時間がかかりすぎます。どのように私はそれを最適化できますか?PostGISクエリーが長すぎます。 > 400ms

答えて

0

私はこの問題を解決しました。私はそれを複雑にする必要はありませんでした。 ST_DWithinは地理学でより速く動作し、より正確です。そのため、ST_DWithinを地理に使用し、地理上の索引を作成して、照会を高速化しました。

0

あなたは説明プランを掲載していませんが、データベースには各行にST_Transformを実行する必要があるため、変換にインデックスを持たないと仮定します。 manualに記載されているとおり、作成することをお勧めします。

CREATE INDEX indiahighway_ref_geom_2163 
    ON indiahighway_ref 
    USING gist 
    (ST_Transform(geom, 1163)) 
    WHERE geom IS NOT NULL; 
関連する問題