요컨대,
- 위도와 경도의 데이터 유형은 무엇입니까?
- 예를 들어 가장 가까운 100 개의 식당을 얻기 위해 어떤 SQL 명령을 호출해야합니까?
세부 묘사:
위도 및 경도가 각각 100k 인 비즈 레코드가 있습니다. MySQL이 실제로 point라는 데이터 유형을 지원한다는 것을 알았습니다. 대신 사용해야합니까?
MySQL이 KDTree 스토리지 시스템을 지원합니까? http://en.wikipedia.org/wiki/File:KDTree-animation.gif
위도 및 경도를 저장하기 위해 일반 부동 데이터 유형보다는 포인트 데이터 유형을 사용하는 것이 가장 좋습니까?
결국 나는 예를 들어 105,6에 가장 가까운 처음 100 개의 식당과 같은 것을 찾고 싶습니다. 내 데이터베이스에는 많은 비즈와 포인트가 있습니다. 분명히 모든 레코드와 모든 포인트에 대해 거리를 하나씩 계산하는 것은 O (n) 일 것이므로 짜증납니다.
Yelp와 같은 응용 프로그램이 데이터베이스에서 거리 정보를 효율적으로 검색하는 방법에 설명 된 더 간단한 솔루션을 알고 있으며 시작을 위해 저 자신도 구현할 것입니다. 좋은 대답입니다.
그러나 나는 그 답을 능가해야 할 작물 답변의 한 가지 크림이 있다고 생각합니까? 실제로 위도와 경도를 기준으로 위치를 저장하고 가장 가까운 물건을 찾는 것은 mysql이 특별한 디자인 패턴을 가질 것으로 예상되는 매우 일반적인 문제입니다. 그게 있습니까?
그것에 대해 더 배울 수있는 곳은 어디입니까? 감사.