MySQL을 사용하여 지정된 범위 내의 주소를 효율적으로 검색하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-03 15:13:03
원래의
248명이 탐색했습니다.

How to Efficiently Retrieve Addresses within a Specified Range using MySQL?

MySQL을 사용하여 특정 범위 내 주소를 효율적으로 검색

주어진 위치에서 반경 5마일 내의 주소를 효과적으로 검색하려면 100,000개의 주소를 모두 검색하고 Java로 거리를 계산하는 것은 비효율적입니다. 대신 MySQL은 Haversine 공식을 통해 적합한 솔루션을 제공합니다.

Haversine 공식은 구 위의 두 지점(이 경우 사용자 위치와 각 주소) 사이의 대원 거리를 계산합니다. 이 공식을 사용하면 다음과 같이 MySQL 쿼리를 구성할 수 있습니다.

<code class="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;</code>
로그인 후 복사

위 쿼리에서 $lat 및 $lng는 사용자의 좌표를 나타내고 lat 및 lng는 주소 좌표를 나타냅니다. Haversine 공식을 적용하여 쿼리는 각 주소와 사용자 위치 사이의 거리를 계산하고 5마일 범위 내의 주소만 선택합니다.

이 접근 방식을 활용하면 필요한 주소를 효율적으로 검색할 수 있습니다. 100,000개 주소 모두에 대한 거리를 계산하는 계산 비용이 많이 드는 작업을 피하면서 지도에 표시됩니다.

위 내용은 MySQL을 사용하여 지정된 범위 내의 주소를 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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