> 데이터 베이스 > MySQL 튜토리얼 > 반경 내의 주소에 대해 MySQL에서 GeoSpatial 쿼리를 최적화하는 방법은 무엇입니까?

반경 내의 주소에 대해 MySQL에서 GeoSpatial 쿼리를 최적화하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-02 03:23:02
원래의
371명이 탐색했습니다.

How to Optimize GeoSpatial Queries in MySQL for Addresses Within a Radius?

지도에 대한 범위 내 지리공간 쿼리

대규모 데이터베이스에서 지리 데이터를 쿼리하여 지정된 범위 내의 특정 위치를 표시하는 것은 일반적인 과제입니다. 매핑 응용 프로그램에서. 이 질문은 사용자의 지정된 지리적 위치에서 반경 5마일 내의 주소 검색을 최적화하는 방법을 탐구합니다.

거리 계산을 위한 Haversine 공식

사이의 거리를 결정하려면 지구 표면의 두 지점에는 Haversine 공식이 사용됩니다. 이 수학 공식은 지구의 곡률과 점의 위도 및 경도를 고려하여 대원 거리를 계산합니다.

Haveline Formula를 사용한 쿼리 최적화

Haversine 공식, 제공된 MySQL 쿼리는 원하는 범위에 속하는 주소만 검색합니다:

$sql = "SELECT *, (3959 * acos( cos( radians(" . $lat . ") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(" . $lng . ") ) + sin( radians(" . $lat . ") ) * sin( radians( lat ) ) ) ) AS distance FROM your_table HAVING distance < 5";
로그인 후 복사

매개변수 및 변수

  • $lat **, **$lng: 사용자의 현재 위치 좌표.
  • lat, lng: 각 주소의 좌표가 포함된 테이블의 열 .
  • 3959: 지구 반경(마일)(킬로미터는 6371로 변환).
  • 거리: 사용자 위치와 각 주소 사이의 계산된 거리 .

결과

쿼리는 각각의 계산된 거리와 함께 주소 목록을 출력합니다. HAVING 절을 사용하면 지정된 5마일 반경 내의 주소만 검색되어 보다 효율적이고 대상이 지정된 레코드를 선택할 수 있습니다. 이 접근 방식은 전송 및 처리되는 데이터의 양을 대폭 줄여 매핑 애플리케이션의 전반적인 성능을 향상시킵니다.

위 내용은 반경 내의 주소에 대해 MySQL에서 GeoSpatial 쿼리를 최적화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿