티스토리 뷰

IT Story/DB

MSSQL 인덱스 새성 및 삭제

행복한소식까치 2017. 8. 10. 14:34
반응형

회사에서 MSSQL DB를 사용하고 있습니다.
금일 인덱스를 수정 할 일이 있어서 평소와 같이 GUI모드에서 인덱스를 변경하니 기존 등록된 많은 DATA때문에
시간초가가 나면서 인덱스 수정이 되지 않습니다. ㅠ.ㅠ

그래서 쿼리로 인덱스를 수정하기 위해서 구글링한 내용으로 인덱스 수정 하였으나 오류가 나서
차선책으로 기존 인덱스를 삭제 후 새로 생성 하였습니다.
제가 인덱스 수정한 방법
Alter index 인덱스명 on 테이블명(컬럼1,컬럼2)
(PS. 왜 안되는지 모르겠습니다. 혹시 원인을 알고 있는분은 제보 부탁합니다.)

지금부터 구글링하면서 알게된 내용을 정리하려합니다.


 인덱스(Index)란 ?

인덱스란 쉽게 설명하자면 책의 색인과 유사하다고 생각하면 됩니다.
  즉 검색을 빠르게 하기 위해서 만드는 것입니다. 인덱스도 데이터 용량을 차기 하기 때문에 무조건 많이 만드는것이
  좋은것은 아닙니다. 일반적으로 인덱스를 만들면 검색속도는 빨리지지만 입력 및 수정 속도는 느려집니다.
  그래서 테이블의 용도에 적합하게 인덱스를 만들어야 합니다.

 인덱스의 종류

  인덱스는 크게 CLUSTERED INDEX 와 NON-CLUSTERED INDEX가 있다
  CLUSTERED INDEX를 생성하게되면 데이터페이지 자체가 인텍스 키값과 같이 물리적으로 정렬되고,
  NON-CLUSTERED INDEX를 생성하게 되면 데이터페이지는 그대로 있고 인텍스페이지만 정렬됩니다.
  그리고 인덱스는 중복허용 여부에 따라  UNIQUE CLUSTERED INDEX, CLUSTERED INDEX,
  UNIQUE NON-CLUSTERED INDEX, NON-CLUSTERED INDEX로  구분 할 수 있다.

 MSSQL 인덱스 생성 방법

1)기본형 : 아래의 경우 중복데이트 입력가능한 인덱스가 생성됩니다.

     Create Index 인덱스명 On 테이블명(컬럼1,컬럼2,...);


2)유니크한 인덱스 생성 방법
: 아래쿼리는 중복데이터입력이 불가능한 인덱스를 생성하면서 컬럼1은 내림차순 컬럼2는 오름차순으로 생성합니다.
                                     
     Create Unique Index 인덱스명 On 테이블명(컬럼1 Desc, 컬럼2 Asc)


3)클러스터 인덱스
: 테이블당 하나만 생성가능하며  PK(Primary Key)의 경우 자동으로 유니크 클러스터 인덱스로 생성됨
 
 생성방법 
     :중복허용
      Create Clustered Index 인덱스명 On 테이블명(컬럼1,컬럼2) 
     :중복불가(컬럼1, 컬럼2가 동일한 값이 2면 입력할 수 없음)
      Create Unique Clustered Index 인덱스명 On 테이블명(컬럼1,컬럼2) 

4)넌 클러스터 인덱스
: 테이블당 최대249개까지 생성가능함

생성방법
    : 중복허용
     Create Non-Clustered Index 인덱스명 On 테이블명(컬럼1,컬럼2)
     :중복불가(컬럼1, 컬럼2가 동일한 값이 2면 입력할 수 없음)
     Create Unique Non-Clustered Index 인덱스명 On 테이블명(컬럼1,컬럼2)


MSSQL 인덱스 삭제


인덱스를 삭제하기위해서는 해당 테이블에 Alter권한이 있어야 가능합니다.

 명령어 
 Drop Index 인덱스명 On 테이블명

반응형

'IT Story > DB' 카테고리의 다른 글

Mysql 외부접속 허용 방법  (0) 2017.08.30
Mysql 버전 확인 방법  (0) 2017.08.29
Mysql DB 백업하기  (0) 2017.07.31
MySql 유저 생성 및 권한 설정 방법  (0) 2017.07.22
Mysql - 저장 프로시저 생성 및 호출 방법  (0) 2017.05.23
댓글