2012-06-21 2 views
2

20 근처에있는 가장 가까운 비즈니스를 찾고 싶다고 말하십시오. 늦게 다음 20 번 가까운 곳을보고 싶습니다. 예. myisam이 있습니다. 포인트에 공간 인덱스가 있습니다. 내가 보내야 할 실제 SQL 명령을 찾고 있습니다.포인트를 찾고, 친밀도를 기준으로 정렬하고, 1-20, 21-40 등을 얻는 방법. Myisam, mysql 및 공간 인덱스를 사용하여 효율적으로 처리하십시오.

것은 명확하게하려면 :

참고 :

  1. 내가 사용하고 MySQL의의 MyISAM 공간 인덱스입니다. 나는 서핑을하면서 이리 저리 돌아 다니며 나의 정확한 필요에 대해 아무것도 발견하지 못했다.
  2. 전체 테이블에 대해 거리를 계산하고 싶지 않습니다 (너무 비효율적입니다). 공간 인덱스의 요점은 적어도 많은 포인트를 효과적으로 제거 할 수 있다는 것입니다. 왼쪽에서 위로 향하는 일부 포인트가 자격을 얻지 못하면 해당 포인트의 왼쪽과 위로 모든 포인트가 자격을 얻지 못합니다.
  3. 나는 여전히 비효율적 인 어떤 지역의 에 대한 거리를 계산하고 싶지 않습니다. 관심 분야가 10km이고 65k 개의 사업장이 있습니다. 등
  4. 내가 거리로 포인트를 정렬하고 포인트 1-20, 21-40, 41-60를 표시 할 수 있기를 원하기 때문에 나는 점의 적당한 수의 거리 를 계산 괜찮다,
  5. 내가 발견 Postgis를 위해 그렇게하는 방법 http://blog.opengeo.org/2011/09/28/indexed-nearest-neighbour-search-in-postgis/ 나는 mysql myisam과 비슷한 것을 원한다.
  6. 샘플 또는 실제 샘플 SQL 명령으로 실제 SQL 코드가있는 웹 사이트를 원합니다. 그래서 "공간 사용"이라고 말하지 마십시오. 이봐. 알아. 나는 실제 SQL 명령을 원한다.
  7. 먼저 작은 영역을 검색하는 복잡한 루프를 수행하고 싶지 않습니다. mysql 엔진에 의해 효율적으로 수행되는 한 번의 작업으로이 작업을 수행 할 수있는 sql 명령이 있어야합니다.
  8. 직교 거리가 좋습니다. 고객의 대부분이 아닌 북쪽 또는 남쪽 기둥에 있지 않는 한 우리가 지구에 살고 있음을 알 필요가 없습니다.

160 만 개가 있습니다. 물론 그들 모두를위한 거리를 계산하고 그것을 정렬하는 것은 어리 석다.

그렇다면 지리적 공간 인덱스가 올바르게 작동하는 곳은 어디입니까?

그래서 어떤 SQL 명령을 보내야합니까?

답변

1

귀하의 질문에 대해 말씀 드릴 수 없으므로 답변으로 남겨 두어야 할 것 같습니다. 이 질문에

봐 :

https://gis.stackexchange.com/questions/22082/how-can-i-use-r-tree-to-find-points-within-a-distance-in-spatialite

이 조금, MYISAM가 제공하는 기능이 할 수있는 좋은 방법이 보이지 않는 문서 둘러보고있다.

+0

내 응용 프로그램이 공간 검색을 수행하는 것이 절대적으로 중요하기 때문에 mongodb로 이동해야한다고 말하고 있습니까? –

+0

+1. 당신은 곧 논평 할 수 있어야합니다. –

+1

http://blog.opengeo.org/2011/09/28/indexed-nearest-neighbour-search-in-postgis/ 저는 PostGIS로 이동할 것입니다. 그것은 당신이 필요로하는 기능을 직접 지원하는 것 같습니다. 희망이 도움이됩니다. 저는 GIS에 익숙하지 않습니다. 이것은 모두 검색의 결과입니다. –