관리 메뉴

안까먹을라고 쓰는 블로그

[MS SQL] 인덱스[Index] && 인덱스 조각화현상 본문

DataBase/MS SQL

[MS SQL] 인덱스[Index] && 인덱스 조각화현상

YawnsDuzin 2012. 9. 1. 20:38

 

반응형

인덱스 - 데이터를 좀더 빠르게 찾을 수 있도록 해주는 도구 

Table Scan - 데이터 페이지를 처음부터 끝까지 찾아본다는 의미이다. 인덱스가 없을 경우거나 

                    인덱스가 있어도 그냥 테이블을 찾아보는 것이 빠른 경우에 사용한다. 

Index Seek - 비클러스터형 인덱스에서 데이터를 찾아본다는 의미이다. 

Clustered Index Seek - 클러스터형 인덱스에서 데이터를 찾아본다는 의미이다. 

Clustered Index Scan - Table Scan과 동일한 의미이다. 클러스터형 인덱스의 리프 페이지는  

결국 데이터 페이지이기 때문이다. 

 

■ 테이블의 인덱스 확인 명령어 

   exec sp_helpindex 테이블이름  

 

■  클러스터형 인덱스  

   ▶ 인덱스 추가 명령

CREATE INDEX 인덱스이름(PK_테이블이름_컬럼이름)

ON 테이블이름 (컬럼이름)

   ▶ 인덱스 수정 명령

ALTER TABLE 테이블이름

ADD CONSTRAINT 인덱스이름(PK_테이블이름_컬럼이름)

PRIMARY KEY (컬럼이름)

 

■ 비클러스터형 인덱스  

   ▶ 인덱스 추가 명령

CREATE UNIQUE INDEX 인덱스이름(UK_테이블이름_컬럼이름)

ON 테이블이름 (컬럼이름)

 

   ▶ 인덱스 수정 명령

ALTER TABLE 테이블이름

ADD CONSTRAINT 인덱스이름(UK_테이블이름_컬럼이름)

PRIMARY KEY (컬럼이름)

 

 

■  인덱스 삭제 

   DROP INDEX 테이블이름.인덱스이름 

  ※ 인덱스 삭제시에는 비클러스터형 인덱스를 먼저 삭제하는게 효율적입니다

  ※ 제약조건으로 생성된 인덱스는 DROP INDEX구문으로 삭제할 수 없다.

 

■  제약조건 삭제

    ALTER TABLE 테이블이름

    DROP CONSTRAINT 인덱스이름

 

 

=========================================================================================================

 

조각화 현상 

조각화는 디스크상에 페이지들이 연속적으로 위치해 있지 않고 공간을  두고 떨어져 있는 현상을  

말한다.  인덱스를 처음 생성했을 때는 연속해서 페이지들이 위치해 있지만 데이터의 변경( 

Insert, Update, Dlete)이 일어나다 보면 나중에는 페이지가 비연속적으로 위치하게 되어 성능을 

떨어뜨리게 되는 경우가 있다. 따라서 이러한 데이터 페이지 및 인덱스 페이지들은 다시 순차적인 

데이터 저장 형태로 재 조정할 필요가 있다. 

 

 

데이터 및 인덱스 페이지를 순차적인 순서로 바꾸는 방법에는 다음의 5가지가 있다. 

1. 해당 테이블 및 데이터베이스를 백업한 후 리스토어 하는 방법.

2. DROP INDEX, CREATE INDEX를 이용해 인덱스를 재생성하는 방법. 

3. CREATE INDEX시 DROP_EXISTING옵션으로 재생성하는 방법. 

4. ALTER INDEX  인덱스명 ON 테이블명 REBUILD로 인덱스를 재구축하는 방법

5. ALTER INDEX 인덱스명 ON 테이블명 REORGANIZE로 인덱스 조각화를 조절하는 방법. 

 

 

 

ALTER index PK_tblTempShipPlan ON dbo.tblTempShipPlan REBUILD   

 -- WITH (ONLINE =  ON)
ALTER index PK_tblTempShipTicket ON dbo.tblTempShipTicket REBUILD  
 

-- WITH (ONLINE =  ON) 

 

 

DROP STATISTICS [dbo].[tblShipPlan].[_dta_index_tblShipPlan_8_1478296326__K12_K2_K4_K1]

DROP INDEX [dbo].[tblShipPlan].[_dta_index_tblShipPlan_8_1478296326__K12_K2_K4_K1]

 

 

 

반응형
Comments