제3장 공간 인덱스

내용 목차

3.1. 공간 인덱스 생성
3.1.1. 공간 인덱스 제약 사항
3.2. 공간 인덱스 제거

Tibero Spatial에서는 공간 질의 성능 향상을 위해 RTREE 방식으로 구현된 공간 인덱스를 제공한다.

3.1. 공간 인덱스 생성

공간 인덱스 생성 방법과 제약에 대해서 설명한다.

  • 사용법

    CREATE INDEX index_name on [schema_name.]
                 table_name ON col_name RTREE
    이름설명
    <index_name>생성할 공간인덱스의 이름이다.
    schema_name인덱스를 생성할 대상 테이블의 소유자이다.
    table_name인덱스를 생성할 대상 테이블을 설정한다.
    col_name인덱스를 생성할 대상을 설정한다. 컬럼은 GEOMETRY TYPE이어야 한다.
    RTREERTREE 인덱스로 생성함을 의미하는 예약어를 설정한다.
  • 예제

    SQL>CREATE TABLE GIS (ID INTEGER PRIMARY KEY, GEOM GEOMETRY);
    Table 'GIS' created.
    SQL>CREATE INDEX RT_IDX_GIS ON GIS(GEOM) RTREE;
    Index 'RT_IDX_GIS' created.
    
    INSERT INTO GIS VALUES (101, ST_GEOMFROMTEXT('POINT(1 1)'));
    INSERT INTO GIS VALUES (102, ST_GEOMFROMTEXT('MULTIPOINT(1 1, 2 2)'));
    INSERT INTO GIS VALUES (103, ST_GEOMFROMTEXT('LINESTRING(1 1, 2 2)'));
    INSERT INTO GIS VALUES (104, ST_GEOMFROMTEXT('MULTILINESTRING((1 1, 2 2), 
    (3 3, 4 5))'));
    INSERT INTO GIS VALUES (105, ST_GEOMFROMTEXT('POLYGON((1 1, 2 1, 2 2, 1 2, 
    1 1))'));
    INSERT INTO GIS VALUES (106, ST_GEOMFROMTEXT('POLYGON((0 0, 0 12, 12 12, 12 0, 
    0 0), (6 10, 6 11, 9 11, 9 10, 6 10), (6 3, 6 6, 9 6, 9 3, 6 3))'));
    INSERT INTO GIS VALUES (107, ST_GEOMFROMTEXT('MULTIPOLYGON(((1 1, 2 1, 2 2, 1 2, 
    1 1)), ((3 3, 3 5, 5 5, 5 3, 3 3)))'));
    INSERT INTO GIS VALUES (108, ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(1 1), 
    LINESTRING(2 2, 3 3))'));
    INSERT INTO GIS VALUES (109, ST_BOUNDARY(ST_GEOMFROMTEXT('POINT(10 10)')));
    INSERT INTO GIS VALUES (110, ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(1 1), 
    LINESTRING(2 2, 3 3))')); 
    COMMIT;
    

3.1.1. 공간 인덱스 제약 사항

공간 인덱스는 다음과 같은 경우에 제약을 가진다.

  • 여러 컬럼에 대해 하나의 인덱스를 걸 수 없다.

  • 공간 인덱스는 파티션이 될 수 없다.

  • 공간 인덱스는 GEOMETRY TYPE이 아닌 컬럼에 대하여 생성할 수 없다.

  • SQL의 WHERE 절에 다음의 함수를 구현하였을 때만 공간 인덱스의 사용이 가능하다.

    • ST_EQUALS

    • ST_TOUCHES

    • ST_WITHIN

    • ST_OVERLAPS

    • ST_CROSSES

    • ST_INTERSECTS

    • ST_CONTAINS

3.2. 공간 인덱스 제거

공간 인덱스의 제거는 다른 인덱스와 동일하다.

  • 사용법

    DROP INDEX index_name
    이름설명
    index_name삭제할 공간 인덱스의 이름이다.