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 



강성욱 / jevida@naver.com

Microsoft SQL Server MVP

Blog : http://sqlmvp.kr

Facebook : http://facebook.com/sqlmvp

   



No. Subject Author Date Views
Notice 2023년 1월 - SQLER의 업데이트 강좌 리스트 코난(김대우) 2023.01.02 598
1686 파티션 오프셋과 SQL Server에 대한 디스크 할당 단위 크기 jevida(강성욱) 2016.09.13 1737
1685 Read the End of a Large Error Log (에러로그 끝 부분 읽기) jevida(강성욱) 2016.09.13 1327
1684 데이터베이스 여유공간 확인 jevida(강성욱) 2016.09.13 1470
1683 FILE GROUP 간 데이터 이동 jevida(강성욱) 2016.09.13 1629
1682 문서화 되지 않은 sys.fn_PhysLocFormatter 함수 jevida(강성욱) 2016.09.13 992
1681 SQL Server 관리자 전용 연결(DAC) jevida(강성욱) 2016.09.13 3510
1680 파일 접근 권한으로 인한 DB복원 실패 작업 해결하기 jevida(강성욱) 2016.09.13 2033
1679 DBCC CHECKDB 실행과 히스토리 관리 jevida(강성욱) 2016.09.13 1869
1678 MDF를 이용한 데이터베이스 복원 jevida(강성욱) 2016.09.13 1193
1677 EventID 3041 Error jevida(강성욱) 2016.09.13 1460
1676 데이터베이스 미러 백업 jevida(강성욱) 2016.09.13 1346
1675 SNAPSHOT을 이용한 SQL Server 복원 jevida(강성욱) 2016.09.13 2487
1674 복사 전용 백업(COPY ONLY BACKUP) jevida(강성욱) 2016.09.13 3700
1673 SQL Server 기본 백업 폴더 변경하기 jevida(강성욱) 2016.09.13 4104
1672 sp_helpindex 의 향상된 버전 minsouk 2016.05.17 4578
» Spatial Index (공간 인덱스) 생성, 수정, 삭제 jevida(강성욱) 2016.01.11 9465
1670 Spatial Indexing 개요 (공간 인덱스) jevida(강성욱) 2016.01.11 7537
1669 Event Session을 이용한 Session Health check jevida(강성욱) 2016.01.11 6937
1668 SQL Server 2012 XML 플랜을 통한 병렬화 되지 않는 이유 살펴보기 jevida(강성욱) 2016.01.11 7522
1667 Event Session을 이용한 SQL OS Session Schedule check jevida(강성욱) 2016.01.11 7310





XE Login