>  기사  >  데이터 베이스  >  MySQL을 사용하여 반경 5마일 내에서 좌표를 효율적으로 찾는 방법은 무엇입니까?

MySQL을 사용하여 반경 5마일 내에서 좌표를 효율적으로 찾는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-01 01:56:28346검색

How to Efficiently Find Coordinates Within a 5-Mile Radius Using MySQL?

MySQL을 사용하여 범위 내 좌표 찾기

데이터베이스 성능을 향상하고 처리 요구를 줄이려면 데이터베이스 내에서 특정 데이터를 검색하는 쿼리를 최적화하는 것이 바람직합니다. 지정된 범위. 이 시나리오에는 각각 위도 및 경도 좌표가 포함된 100,000개의 주소가 있는 데이터베이스가 있습니다. 귀하의 목표는 특정 사용자 위치에서 반경 5마일 내에 있는 주소만 표시하여 결과를 100,000에서 5 또는 6 정도로 효과적으로 좁히는 것입니다.

이 문제를 효율적으로 해결하려면 다음을 활용할 수 있습니다. MySQL 쿼리에서 직접 Haversine 수식을 사용할 수 있습니다. 이 수학 공식은 각각의 위도 및 경도 값을 사용하여 구 위의 두 점 사이의 거리를 계산합니다.

다음은 Haversine 공식을 쿼리에 통합할 수 있는 방법입니다.

$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를 사용자 위치의 위도 및 경도 좌표로 바꿉니다. 이 쿼리의 결과는 거리 열에 지정된 사용자 위치로부터의 거리를 포함한 주소 목록이 됩니다. 그런 다음 이 목록을 사용하여 5마일 범위에 속하는 주소를 필터링할 수 있습니다.

MySQL에서 Haversine 공식을 직접 적용하면 검색되는 레코드 수를 크게 줄이고 성능을 향상시킬 수 있습니다. 데이터베이스 운영. 이 방법을 사용하면 관련 주소만 반환되어 불필요한 처리가 최소화되고 애플리케이션의 응답성이 향상됩니다.

위 내용은 MySQL을 사용하여 반경 5마일 내에서 좌표를 효율적으로 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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