MS-SQL

인덱스 생성

쿠카이든 2022. 12. 21. 00:29
728x90
인덱스의 정의와 사용방법

 

 - 인덱스란?

 
  테이블의 데이터를 조회할 때 빠르고 효과적으로 조회할 수 있도록 도와주는 역활을 하는 데이터 구조입니다.
   조회는 빠르지만 INSERT, UPDATE등을 수행할 떄는 느려지기 때문에 조회가 많은 테이블을 기준으로 설정하여야 합니다.

 

 - MSSQL INDEX 생성 방법 (중복 허용)

 
​   CREATE INDEX [인덱스명]
   ON [테이블명([컬럼명] [정렬기준])

 

 - MSSQL UNIQUE INDEX 생성 방법 (중복 비 허용)

 
​   CREATE UNIQUE INDEX [인덱스명]
   ON [테이블명([컬럼명] [정렬기준])

 

 [참고사항] INDEX 와 UNIQUE INDEX



   INDEX 와 UNIQUE INDEX는 둘다 조회를 효과적으로 하는역활을 하지만 UNIQUE INDEX 가 설정된 컬럼은 중복데이터가
   들어갈 수 없고, INDEX 가 설정된 컬럼은 중복데이터가 들어가도 되는 차이점이 있습니다.
 

 

예제 데이터 생성

 - 테이블 생성



   CREATE TABLE dbo.성적 (
       일련번호 int NOT NULL,
       이름 varchar(6) NOT NULL,
       점수 int NOT NULL
   )

 

 - 데이터 입력



   INSERT INTO dbo.성적 (일련번호, 이름점수) VALUES (1'홍길동'90)
   INSERT INTO dbo.성적 (일련번호, 이름점수) VALUES (2'일지매'95)
   INSERT INTO dbo.성적 (일련번호, 이름점수) VALUES (1'임꺽정'90)
 

 

 - 테이블 입력 결과 확인



   SELECT * FROM dbo.성적
 

일련번호 이름 점수
1 홍길동 90
2 일지매 95
1 임꺽정 90

  

 Create Index 예제

 - 예제 1



   성적 테이블의 점수 컬럼에 중복이 허용되는 오름차순 인덱스를 설정하시오.
 

 

 - 예제 1 쿼리



   CREATE INDEX 성적_인덱스_점수
   ON dbo.성적 (점수 ASC)

 

 - 인덱스 확인 쿼리



   SELECT COUNT(nameAS 결과 FROM sys.indexes WHERE name = '성적_인덱스_점수'

 

결과
1

  

 

 - 예제 2



   성적 테이블의 일련번호 컬럼에 중복이 허용되지 않는 내림차순 인덱스를 설정하시오.
 

 

 - 예제 2 쿼리



   CREATE UNIQUE INDEX 성적_인덱스_일련번호
   ON dbo.성적 (일련번호 DESC)

 

 

결과
메시지 1505, 수준 16, 상태 1, 줄 1
개체 이름 'dbo.성적' 및 인덱스 이름 '성적_인덱스_일련번호'에 키가 중복되므로 CREATE UNIQUE INDEX 문이 종료되었습니다. 중복 키 값은 (1)입니다.

 

 [참고사항] 예제 2번의 오류에 대해서



   예제 2번에서 오류가 발생한 이유는 UNIQUE INDEX를 설정하는 일련번호에 중복된 데이터가 들어 있기 때문입니다.
   중복된 데이터를 제거해야 UNIQUE INDEX를 설정할 수가 있습니다.
 

 

 - 예제 3



   성적 테이블의 중복데이터를 제거하고 일련번호 컬럼에 중복이 허용되지 않는 내림차순 인덱스를 설정하시오.
 

 

 - 예제 3 쿼리



   DELETE FROM dbo.성적 WHERE 이름 '임꺽정'
 
   CREATE UNIQUE INDEX 성적_인덱스_일련번호
   ON dbo.성적 (일련번호 DESC)

 

 - 인덱스 확인 쿼리



   SELECT COUNT(nameAS 결과 FROM sys.indexes WHERE name = '성적_인덱스_일련번호'

 

결과
1

 

출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=diceworld&logNo=220180322020 

 

MSSQL 인덱스 생성하기 (CREATE INDEX)

     - 인덱스란?     테이블의 데이터를 조회할 때 빠르고 효과적으로...

blog.naver.com

 

728x90