2014-12-20 7 views
1

나는 모양 인덱스 공간 데이터와 MySQL의 테이블이 있습니다MySQL의 가장 가까운 쿼리

CREATE TABLE `mytable` (
    `ID` bigint(20) NOT NULL AUTO_INCREMENT, 
    `TIME` datetime DEFAULT NULL, 
    `SPOT` point NOT NULL, 
    PRIMARY KEY (`ID`), 
    SPATIAL KEY `SPOT` (`SPOT`) 
) ENGINE=MyISAM AUTO_INCREMENT=6473924464345089 DEFAULT CHARSET=utf8; 

행이 같이 삽입 :

INSERT INTO mytable (time, spot) VALUES (now(), (GeomFromText('POINT(110.0 120.0)', 4326))); 

나는 주어진 가장 가까운 지점을 찾기 위해 쿼리를하고있는 중이을 latlong

'spot'이 인덱싱되지만 전체 테이블 스캔을 수행하고 있습니다.

나는 그것을 최적화하는 데 도움을 주셔서 감사합니다!

답변

1

스팟 인덱스가 도움이되지 않는다면, MySQL은 여전히 ​​각각 st_distance을 계산하여 10.0, 12.0에서 계산할 수 있어야합니다.

빠른 검색을 수행하지 않으려면 where condition을 추가하여 색인을 사용할 수있는 지점 수를 줄이십시오.

+0

감사합니다. Andreas. 그것은 직사각형과 교차하는 행을 반환하는 또 다른 쿼리가 있기 때문에 흥미 롭습니다. 인덱스가 사용되었습니다. 나는 그것이 비슷한 방식으로 작동 할 것이라고 생각했을 것이다. – gatti