2014-03-13 3 views
0

데이터베이스에 2D 점 (지리적 좌표) 테이블이 있다고 가정 해 봅시다. 이 데이터 배열 중에서 주어진 좌표와 가장 가까운 좌표를 가진 행을 검색하도록 데이터를 구성하는 것이 가장 좋은 방법입니까? 테이블 크기는 1000 행의 경우이 방식이 허용 될 수 있습니다적은 노력으로 2D 벡터 검색

SELECT * FROM `pois` WHERE 1 
ORDER BY ($x-`x`)*($x-`x`) + ($y-`y`)*($y-`y`) ASC LIMIT 1 

:

나는보다 더 아무것도 알아낼 수 없습니다. poi DB가 1 백만 행에 해당하는 경우 몹시 느려질 수 있습니다 ...

의견이 있으십니까?

+0

[거리 정보 검색] (http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL)? –

+0

가능한 위도/경도의 가장 가까운 위도/경도 찾기 - 복잡한 SQL 또는 복잡한 계산!] (http://stackoverflow.com/questions/2234204/latitude-longitude-find-nearest-latitude-longitude-complex-sql- or-complex-calc) –

답변

0

원으로 검색하는 대신 BETWEEN을 사용하여 정사각형을 검색하면 SQL에서 X와 Y의 인덱스를 활용할 수 있기를 바랍니다.

그런 다음 다시 가져온 데이터의 하위 집합에 대해 전체 원형 확인을 수행하십시오.