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
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
私はこの問題を解決しました。私はそれを複雑にする必要はありませんでした。 ST_DWithinは地理学でより速く動作し、より正確です。そのため、ST_DWithinを地理に使用し、地理上の索引を作成して、照会を高速化しました。
あなたは説明プランを掲載していませんが、データベースには各行にST_Transform
を実行する必要があるため、変換にインデックスを持たないと仮定します。 manualに記載されているとおり、作成することをお勧めします。
CREATE INDEX indiahighway_ref_geom_2163
ON indiahighway_ref
USING gist
(ST_Transform(geom, 1163))
WHERE geom IS NOT NULL;