X마일 반경 내의 행에 대한 mySQL 경도 및 위도 쿼리
지리 공간 데이터가 포함된 대규모 데이터베이스 내에서는 행을 검색해야 하는 경우가 많습니다. 특정 위치의 특정 반경 내에 해당합니다. 이는 일반적으로 구면 기하학을 사용하여 구의 두 점 사이의 거리를 계산하는 방법입니다.
중심점에서 반경 25마일 내의 행을 찾는 쿼리 중 하나는 거리 범위가 86마일인 일부 부정확한 결과를 반환합니다. 800마일 떨어진 지점까지. 원래 쿼리는 다음과 같습니다.
<code class="sql">SELECT *,(((acos(sin(($lat*pi()/180)) * sin((`latitude`*pi()/180))+cos(($lat*pi()/180)) * cos((`latitude`*pi()/180)) * cos((($lon - `longitude`)*pi()/180))))*180/pi())*60*1.1515) AS `distance` FROM `geo_locations` HAVING `distance` < 25 ORDER BY `distance` ASC</code>
이 문제를 해결하려면 매장 찾기 애플리케이션에서 성공적으로 구현된 솔루션을 기반으로 쿼리를 수정해 보겠습니다.
<code class="sql">SELECT `id`, ( 6371 * acos( cos( radians( :lat ) ) * cos( radians( `lat` ) ) * cos( radians( `long` ) - radians( :long ) ) + sin(radians(:lat)) * sin(radians(`lat`)) ) ) `distance` FROM `location` HAVING `distance` < :distance ORDER BY `distance` LIMIT 25</code>
이 수정된 쿼리에서는 쿼리:
이 업데이트된 쿼리를 사용하면 다음을 수행할 수 있습니다. 주어진 중앙 위치 주변의 지정된 마일 반경 내에 있는 행을 효과적으로 검색합니다.
위 내용은 ## 지정된 마일 반경 내에서 MySQL 행을 정확하게 쿼리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!