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;