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
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 );CREATE SPATIAL INDEX geo_index ON restaurant(geom); mysql> show index from restaurant \G *************************** 1. row *************************** Table: restaurant Non_unique: 1 Key_name: geo_index Seq_in_index: 1 Column_name: geom Collation: A Cardinality: NULL Sub_part: 32 Packed: NULL Null: Index_type: SPATIAL Comment: Index_comment: 1 row in set (0.00 sec)Aurora
Recent Posts
Archive Posts
Tags