11.5.3.6 공간 인덱스 만들기
MyISAM
테이블은 MySQL은 일반적으로 지수를 작성하기위한 유사한 구문을 사용하지만, SPATIAL
키워드를 사용하여 공간 인덱스를 만들 수 있습니다. 공간 인덱스의 컬럼은 NOT NULL
로 선언해야합니다. 다음 각 예제에서는 공간 인덱스를 만드는 방법을 보여줍니다.
CREATE TABLE
을 사용하는 경우 :CREATE TABLE geom (g GEOMETRY NOT NULL, SPATIAL INDEX (g)) ENGINE = MyISAM;
ALTER TABLE
을 사용하는 경우 :ALTER TABLE geom ADD SPATIAL INDEX (g);
CREATE INDEX
를 사용하는 경우 :CREATE SPATIAL INDEX sp_index ON geom (g);
SPATIAL INDEX
는 R 트리 인덱스를 만듭니다. 공간 컬럼의 비 공간 인덱스를 지원하는 스토리지 엔진은 B 트리 인덱스가 생성됩니다. 스페이스 값에 대한 B 트리 인덱스는 정확한 값을 검색하는 데 도움이되지만 범위 검색에 도움이되지 않습니다.
공간 컬럼의 인덱스 작성에 대한 자세한 내용은 섹션 13.1.13 "CREATE INDEX 구문" 을 참조하십시오.
공간 인덱스를 삭제하려면 다음과 같이 ALTER TABLE
또는 DROP INDEX
를 사용합니다.
ALTER TABLE
을 사용하는 경우 :ALTER TABLE geom DROP INDEX g;
DROP INDEX
를 사용하는 경우 :DROP INDEX sp_index ON geom;
예 : 테이블 geom
에 32,000 개 이상의 기하 도형이 포함되어 있고, 그 모양이 형태 GEOMETRY
컬럼 g
에 저장되는 것으로합니다. 또한이 테이블 개체 ID 값을 저장하기 위해 AUTO_INCREMENT
컬럼 fid
도 포함되어 있습니다.
mysql>DESCRIBE geom;
+-------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+----------------+ | fid | int(11) | | PRI | NULL | auto_increment | | g | geometry | | | | | +-------+----------+------+-----+---------+----------------+ 2 rows in set (0.00 sec) mysql>SELECT COUNT(*) FROM geom;
+----------+ | count(*) | +----------+ | 32376 | +----------+ 1 row in set (0.00 sec)
컬럼 g
에 공간 인덱스를 추가하려면 다음 문을 사용합니다.
mysql> ALTER TABLE geom ADD SPATIAL INDEX(g) ENGINE=MyISAM;
Query OK, 32376 rows affected (4.05 sec)
Records : 32376 Duplicates : 0 Warnings : 0