위도와 경도를 사용하여 지리적 위치 검색을 위한 MySQL 쿼리 최적화
MySQL에서는 지리적 근접성을 기반으로 데이터를 검색하는 것이 일반적인 작업입니다. 경도 및 위도 값으로 작업할 때 예기치 않은 결과를 방지하려면 효율적인 쿼리를 사용하는 것이 중요합니다.
중심 위도 및 경도에서 반경 25마일 내의 행을 찾으려고 시도하는 다음 쿼리를 고려해 보세요.
<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>
이 쿼리에서 :lat 및 :long 매개변수는 중심점의 위도와 경도를 나타내고, :distance는 반경(마일)을 나타냅니다.
두 쿼리의 주요 차이점은 다음과 같습니다. 라디안을 마일로 변환하기 위한 변환 계수로 6371을 사용합니다. 이 요소는 원래 쿼리에 사용된 3959보다 더 정확합니다. 또한 최적화된 쿼리는 위도와 경도를 기준으로 거리를 계산하는 데 더 엄격한 공식을 사용합니다.
이러한 최적화를 구현하면 위도 및 경도 값을 사용하여 위치 정보 검색을 수행할 때 MySQL 쿼리의 정확도를 크게 향상시킬 수 있습니다. 결과가 항상 지정된 반경 거리 내에 있는지 확인하세요.
위 내용은 ## 위도와 경도를 사용하여 정확한 지리적 위치 검색을 위해 MySQL 쿼리를 최적화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!