대규모 데이터베이스를 사용하여 PHP에서 위치 근접 검색 성능을 어떻게 최적화할 수 있습니까?

Linda Hamilton
풀어 주다: 2024-11-09 06:46:02
원래의
494명이 탐색했습니다.

How Can I Optimize Location Proximity Search Performance in PHP with a Large Database?

위치 근접 검색을 위한 거리 계산 최적화

문제:

PHP 스크립트가 거리를 계산합니다. Haversine 공식을 사용하여 데이터베이스의 특정 위치와 수많은 사업장 위치 사이를 연결합니다. 그러나 데이터베이스 크기(5,000개 기업)가 증가함에 따라 성능에 대한 우려가 커지고 있습니다.

해결책: 데이터베이스 기반 거리 계산 활용

획기적인 개선 검색 효율성을 높이려면 Haversine 공식을 직접 통합하는 데이터베이스 쿼리를 사용하는 것이 좋습니다. 이 접근 방식은 모든 비즈니스 데이터를 검색하고 PHP 스크립트에서 거리 계산을 수행할 필요성을 우회합니다. 방법은 다음과 같습니다.

MySQL의 HAVING 절을 사용하여 결과 집합에 거리 필터를 적용할 수 있습니다.

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) )
  * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) 
  * sin( radians( lat ) ) ) ) AS distance
FROM markers
HAVING distance < 25
ORDER BY distance LIMIT 0 , 20;
로그인 후 복사

이 쿼리에서:

  • 37 및 - 122는 참조 위치에 대한 샘플 위도 및 경도 값입니다.
  • HAVING 절 필터 계산된 거리 열을 기반으로 한 결과로 반경 25단위 내의 위치만 반환됩니다.
  • ORDER BY 절은 거리의 오름차순으로 결과를 정렬합니다.

By 데이터베이스에서 이 계산을 수행하면 추가 처리를 위해 PHP 스크립트로 전송해야 하는 데이터의 양이 크게 줄어듭니다. 이 접근 방식은 특히 대규모 데이터 세트의 성능을 향상시킵니다.

위 내용은 대규모 데이터베이스를 사용하여 PHP에서 위치 근접 검색 성능을 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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