PostGIS의 근접 검색에서 ST_DWithin과 ST_Distance의 차이점은 무엇입니까?


14

지오메트리 필드에 저장된 위도 / 경도 좌표가있는 테이블에 레코드가 저장되어 있습니다. 사용자 제공 기준점 근처의 모든 레코드를 찾고 싶습니다. "가까운"은 아마도 100km 미만 (아마도 더 작은)을 의미합니다.

내가 본 대부분의 예제는 use ST_DWithin입니다. 사용할 수없는 이유가 ST_Distance있습니까? 사용 ST_DWithinST_Distance수행 의 차이점은 무엇입니까 ?

예를 들면 다음과 같습니다.

SELECT name, ST_AsText(coords)
FROM places
WHERE ST_DWithin(coords, ST_GeomFromText('POINT(-12.5842 24.4944)',4326), 1)

vs

SELECT name, ST_AsText(coords)
FROM places
WHERE ST_Distance(coords, ST_GeomFromText('POINT(-12.5842 24.4944)',4326)) < 1

답변:


15

ST_Distance는 모든 행에서 실행 및 평가되어야하는 계산입니다. ST_DWithin에서 인덱스를 사용할 수 있으므로 훨씬 빠릅니다.


4
또한 이와 거의 비슷한 내용을 발견했습니다. postgis.net/2013/08/26/tip_ST_DWithin
User
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.