데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

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
1673 SQL Server 기본 백업 폴더 변경하기 jevida(강성욱) 2016.09.13 4080
1672 sp_helpindex 의 향상된 버전 minsouk 2016.05.17 4563
» Spatial Index (공간 인덱스) 생성, 수정, 삭제 jevida(강성욱) 2016.01.11 9344
1670 Spatial Indexing 개요 (공간 인덱스) jevida(강성욱) 2016.01.11 7517
1669 Event Session을 이용한 Session Health check jevida(강성욱) 2016.01.11 6916
1668 SQL Server 2012 XML 플랜을 통한 병렬화 되지 않는 이유 살펴보기 jevida(강성욱) 2016.01.11 7504
1667 Event Session을 이용한 SQL OS Session Schedule check jevida(강성욱) 2016.01.11 7295
1666 Event Session을 이용한 Memory Health check jevida(강성욱) 2016.01.11 6955
1665 Event Session을 이용한 CPU Health check jevida(강성욱) 2016.01.11 8448
1664 DMV를 이용한 I/O Health check jevida(강성욱) 2016.01.11 7339
1663 CONCAT 함수 (문자열 연결하기)와 주의 사항 jevida(강성욱) 2016.01.11 28012
1662 SQL Server 2012 Columnstore Index jevida(강성욱) 2016.01.11 7527
1661 SQL Server 2012 File Stream / Table 관련 DMV jevida(강성욱) 2016.01.11 4861
1660 SQL Server2012 DMV – 메모리 덤프, 서비스, 구성 확인 jevida(강성욱) 2016.01.11 4706
1659 SQL Server2012 향상된 디버깅 기능 jevida(강성욱) 2016.01.11 4380
1658 SQL Server2012 매개 변수 구성 jevida(강성욱) 2016.01.11 3491
1657 SQL Server2012 도움말 설치 jevida(강성욱) 2016.01.11 3456
1656 SQL Server2012 Checkpoint 제어 jevida(강성욱) 2016.01.11 5307
1655 SSIS 패지키의 메타데이터 유효성 검사 중지하기 jevida(강성욱) 2016.01.11 2950
1654 SSIS 로그 보관기간 설정 (CleanUp 기간 설정) jevida(강성욱) 2016.01.11 4303





XE Login