GPS 위치 데이터베이스를 저장하고 주어진 반경 내에서 가장 가까운 점을 찾는 쿼리를 실행하려고합니다. 나는 mysql을 사용하고 있고 공간 확장을보고있다. 위치 반경 쿼리에서 찾고자하는 것을 수행하기 위해 실제로 공간 확장을 사용하는 방법을 본다면 확실하지 않습니다.위치 데이터베이스 프로 시저
그래서 여기 메신저 내 옵션을 생각하고 무엇을 :
저장 위도 및 긴 GPS는 DB에서 부동 인덱스 변수로 조정합니다. 내가 포인트 gps 좌표와 범위를 얻을 때 쿼리 할 최대/최소 위도/경도 값을 계산 한 후 이들 내에서 거리 함수를 기반으로 정렬합니다.
공간 확장을 사용하십시오. 나는 이것이 효과가있을 것이라고는 꽤 긍정적이지 않다. Distance() 함수는 구현되어 있지 않습니다. 공간 인덱스를 사용하려면 경계 상자 (doable)를 찾고이 경계 상자에있는 점을 찾기 위해 MBRContains 경계 상자 함수를 호출해야합니다. 그러나 점에는 0의 경계가 있으므로 MBRContains 함수는 점에서 작동하지 않습니다.
나는 표준 방법 (있는 것처럼 보인다 나던)되어이 작업을 수행하기 위해 크게 결정에 경험/생각/도움말의 단어를 부탁드립니다 모르겠어요. 나는 현재 mysql 5.13을 사용하고 있으며 5.5에서도 거리 통계를 갖고 있지 않다.
- 2.가 작동해도 어느 쪽이 빠를까요? 귀하의 생각이 무엇인지 알려주고, 특히 당신이 확실하고/빠르고 큰 룩업을 위해 어떤 것을 보았다면 알려 주시기 바랍니다!
MySQL의 공간 인덱스 :이 같은 http://dev.mysql.com/doc/refman/5.5/en/using-a-spatial-index.html
위도/경도 검색에는 공간이 필요하지 않으며 기본 trig는 일부 필요합니다. http://code.google.com/apis/maps/articles/phpsqlsearch.html은 알아내는 데 큰 도움이됩니다. – tadamson
은 2 백만 개를 처리 할 수있을만큼 빠르지 않습니까? –
대부분의 점을 WHERE MyLon BBoxLonMin 및 MyLat BBoxLatMin으로 필터링 할 수 있습니다. 작은 소수의 레코드로 이동 한 후 실제 거리를 확인하십시오. –
geographika