>  기사  >  데이터 베이스  >  Haversine Formula를 사용하여 MySQL의 특정 범위 내의 주소를 효율적으로 쿼리하는 방법은 무엇입니까?

Haversine Formula를 사용하여 MySQL의 특정 범위 내의 주소를 효율적으로 쿼리하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-01 18:20:30422검색

How to Efficiently Query for Addresses Within a Specific Range in MySQL using the Haversine Formula?

지정된 범위 내에서 좌표를 선택하기 위한 MySQL 쿼리

데이터베이스에는 각각 위도가 다른 수많은 주소가 있습니다. 그리고 경도. Google Maps API를 사용하여 지정된 사용자 위치에서 반경 5마일 내의 주소만 지도에 표시하려고 합니다.

불필요하게 모든 기록을 검색하고 Java에서 거리 계산을 수행하는 것은 비효율적이므로, MySQL 쿼리 내에서 Haversine 공식을 활용해 보세요. 이 공식은 지구 표면의 두 지점 사이의 거리를 계산합니다. 수정된 쿼리는 다음과 같습니다.

<code class="sql">SELECT *, (3959 * acos(cos(radians(?)) * cos(radians(lat)) * cos(radians(lng) - radians(?)) + sin(radians(?)) * sin(radians(lat)))) AS distance
FROM your_table
HAVING distance < 5</code>

이 쿼리에서 물음표(?)를 사용자 위치의 위도 및 경도 값(Java 코드의 $lat 및 $lng)으로 바꿉니다. 거리 열에는 각 주소와 사용자 위치 사이의 거리가 저장됩니다.

이 쿼리를 사용하면 지정된 범위 내의 주소만 검색하므로 쿼리 성능이 최적화됩니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.