Spatial Index (공간 인덱스) 생성, 수정, 삭제
- Version : SQL Server 2008, 2008R2, 2012
Spitial Indedx(공간 인덱스)는 geometry 또는 geography 데이터 형식의 열(공간 열)에서 특정 작업을 좀 더 효율적으로 수행 할 수 있다. 하나의 공간 열에 두 개 이상의 공간 인덱스가 지정될 수 있다. 예를 들어 하나의 단일 열에 다른 공간 분할 매개 변수를 인덱싱할 경우 유용하다.
[Spatial Index(공간 인덱스) 제한 사항]
공간인덱스 만들기 위해서는 몇 가지 제한 사항이 있다. 다음 목록을 통해 알아 보자.
l 공간 인덱스는 geometry 또는 geography 유형의 열에서만 만들 수 있다.
l 공간 인덱스는 기본 키가 있는 테이블에서만 정의 할 수 있다.
l 테이블의 최대 기본 키 열 수는 15개이다.
l 인덱스 키 레코드의 최대 크기는 895바이트 이다.
l 공간 인덱스는 인덱싱된 뷰에 저장할 수 없다.
l 지원되는 테이블의 공간 열에 공간 인덱스를 249개까지 만들 수 있다.
l 공간 인덱스는 한 번에 하나씩 만들 수 있다.
l 인덱스 생성 작업은 병렬처리를 사용할 수 있다.
l SQL Server 2012의 공간 분할은 하위 버전으로 복제 할 수 없다.
테스트를 위해 공간 열이 포함된 테이블을 생성하고 데이터를 입력한다. 데이터는 geometry 형식을 사용한다.
IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL DROP TABLE dbo.SpatialTable; GO
CREATE TABLE SpatialTable ( id int IDENTITY (1,1) primary key, GeomCol1 geometry, GeomCol2 AS GeomCol1.STAsText() ); GO
INSERT INTO SpatialTable (GeomCol1) VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));
INSERT INTO SpatialTable (GeomCol1) VALUES (geometry::STGeomFromText('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))', 0)); GO
select * from SpatialTable |
geometry 데이터는 다음과 같다.
공간 데이터는 다음과 같은 출력물을 확인 할 수 있다.
[SSMS에서 공간 인덱스 생성하기]
인덱스를 생성할 테이블을 확장하여 [인덱스]를 선택. 마우스 오른쪽을 클릭하여 [새인덱스] – [공간 인덱스]를 선택 한다.
새 인덱스 생성 창이 나타나면 [추가 버튼을 이용하여 인덱스 열을 추가한다.
공간 인덱스에 추가할 수 있는 인덱스 열은 데이터 형식이 geometry, geography 형식이다.
인덱스를 추가하고 나면 다음과 같이 X의 최대값은 X 최소값보다 커야 한다. Y 최소값은 Y 최대값 보다 커야한다는 경고가 나타난다. 왼쪽 공간 탭에서 다음과 같이 최소, 최대 값을 수정한다.
최소, 최대값을 수정하고 다른 탭으로 이동하면 정상적인 준비 상태가 된다. [확인]을 클릭하면 인덱스가 생성된다.
인덱스 생성이 완료 되고 나면 다음과 같이 공간 인덱스가 생성된 것을 확인 할 수 있다.
[T-SQL 공간인덱스 생성하기]
CREATE SPATIAL INDEX SIndx_SpatialTable_geometry_col1 ON SpatialTable(geometry_col) WITH ( BOUNDING_BOX = ( 0, 0, 500, 200 ) );
|
[참고자료]
공간 인덱스 만들기, 수정 및 삭제 : http://technet.microsoft.com/ko-kr/library/bb964705.aspx
CREATE SPATIAL INDEX : http://technet.microsoft.com/ko-kr/library/bb934196.aspx
2013-11-21 / 강성욱 / http://sqlmvp.kr
'SQL Server > SQL Server Tip' 카테고리의 다른 글
하위 쿼리 사용시 공간 인덱스 사용 불가 (0) | 2015.07.23 |
---|---|
Spatial Data Type (공간 데이터 형식) (0) | 2015.07.23 |
Spatial Indexing 개요 (공간 인덱스) (0) | 2015.07.23 |
Event Session을 이용한 Session Health check (0) | 2015.07.23 |
SQL Server 2012 XML 플랜을 통한 병렬화 되지 않는 이유 살펴보기 (0) | 2015.07.23 |