R-트리 인덱스를 사용하기 위해서는 MyISAM테이블을 만들어야 한다. 다른 스토리지 엔진의 경우 B-트리 인덱스를 사용하는데, 정확한 값을 찾는 것에는 유용하지만 범위 스캔에는 효율적이지 않다. 공간 데이터의 경우 범위 검색을 많이 하므로 MyISAM 테이블을 만들자.
CREATE TABLE restaurant (
name VARCHAR(80),
category VARCHAR(20),
latitude FLOAT,
longitude FLOAT,
geom GEOMETRY NOT NULL,
p INT,
SPATIAL INDEX(geom)
) ENGINE=myISAM DEFAULT CHARSET=utf8;
INSERT INTO restaurant VALUES('푸켓쌀국수', '기타', 37.499851, 127.026272, POINT(127.026272, 37.499851),3 );
INSERT INTO restaurant VALUES('메드포갈릭', '이탈리안', 37.497774, 127.026615, POINT(127.026615, 37.497774),4 );
INSERT INTO restaurant VALUES('아리랑', '한식', 37.499587, 127.027098, POINT(127.027098, 37.499587),5 );
INSERT INTO restaurant VALUES('참치공방', '한식', 37.497868, 127.028428, POINT(127.028428, 37.497868),5 );
INSERT INTO restaurant VALUES('베이징', '중식', 37.496395, 127.029297, POINT( 127.029297, 37.496395),3 );
이해하기 쉽게 구글맵에 표시를 했다.
구글 지도 상의 나의 위치({lat: 37.497933, lng: 127.026993})를 중심으로 150m 반경안에 있는 식당을 찾아보자.
Mysql Spatial Query
Aurora
Recent Posts
Archive Posts
Tags