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(name) AS 결과 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(name) AS 결과 FROM sys.indexes WHERE name = '성적_인덱스_일련번호' |
결과 |
1 |
출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=diceworld&logNo=220180322020
728x90
'MS-SQL' 카테고리의 다른 글
ms-sql 요일 정보 , 요일 한글 함수 (0) | 2023.01.02 |
---|---|
Merge 문이란? (feat. 조건부 데이터 변경) (2) | 2022.12.17 |
단일 사용자 모드 해제 (2) | 2022.12.15 |
IF ELSE 조건문(+ 유의점) (0) | 2022.12.14 |
Convert(), Cast() 함수 사용예제 (0) | 2022.12.13 |