Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- vb.net
- 다이어그램
- java
- asp.net
- Spring_에러정리
- 아파치톰캣
- Git_정리
- 인덱스
- DML
- SQL
- 자바
- CSS
- Git_명령어정리
- Linux
- SQL_용어정리
- JavaScript
- github
- 배열
- 자바스크립트
- 이클립스
- workbench
- git
- 인스턴스
- Spring_오류정리
- Linux_명령어정리
- spring
- jsp
- MySQL
- HTML
- json
Archives
- Today
- Total
데브마우스
[SQL] 인덱스의 개념 정리 본문
인덱스란 무엇인가요?
- 인덱스는 SELECT를 사용해서 테이블을 조회할 때 결과를 빠르게 추출하도록 도와주는 기능입니다.
- 인덱스는 PK라고 말해도 거의 무관합니다.
- 클러스터형 인덱스는 기본 키로 지정되면 자동생성되며 테이블 당 1개만 가능합니다.
- 보조 인덱스는 고유 키로 지정하면 자동 생성되며 여러개 만들 수 있지만 자동 정렬되지는 않습니다.
인덱스의 장단점은 무엇인가요?
장점:
- 아주 빠른 응답속도를 얻을 수 있습니다.
- 결과적으로 전체 시스템의 성능이 향상되는 효과가 있습니다.
단점:
- 인덱스도 공간을 차지해서 데이터베이스 안에 추가적인 공간(약 10% 정도)가 필요합니다.
- SELECT가 아닌 데이터의 변경 작업(INSERT, UPDATE, DELETE)이 자주 일어나면 오히려 성능이 나빠질 수 있습니다. (그래서 주로 회원정보처럼 PK가 변경되지 않는 곳에 사용합니다.)
인덱스의 종류는 어떤게 있나요?
인덱스는 2가지 종류가 있습니다. 클러스터형 인덱스(PK)와 보조 인덱스(UNIQUE)가 있습니다.
클러스터형 인덱스(PK)는 영어사전, 국어사전에 비유할 수 있습니다.
보조 인덱스(UNIQUE)는 책 뒤의 찾아보기에 비유할 수 있습니다.
자동으로 생성되는 인덱스
- 인덱스는 테이블의 열(컬럼) 단위에 생성됩니다.
- 하나의 열에 여러 개의 인덱스 생성 가능합니다.
- 여러 개의 열을 묶어서 하나의 인덱스를 생성할 수도 있습니다.
- 테이블 생성시 PK로 정의한 컬럼은 자동으로 클러스터형 인덱스가 생성됩니다.
테이블의 인덱스를 어떻게 확인하나요?
아래 SQL문으로 인덱스 정보를 확인하실 수 있습니다.
간단한 테이블을 만들고 인덱스 정보를 확인하는 SQL문입니다.
USE 데이터베이스_이름;
CREATE TABLE 테이블_이름(
col1 INT PRIMARY KEY,
co2 INT
);
SHOW INDEX FROM 테이블_이름;
고유키(UNIQUE)도 인덱스가 생성됩니다. 다음은 보조 테이블을 여러 개 생성한 후 인덱스 정보를 확인하는 SQL문입니다.
CREATE TABLE 테이블_이름 (
col1 INT PRIMARY KEY,
col2 INT UNIQUE,
col3 INT UNIQUE
);
SHOW INDEX FROM 테이블_이름;
자동으로 정렬되는 클러스터형 인덱스(PK)
클러스터 형 인덱스(PK)는 영어 사전이나 단어 사전에 비유할 수 있습니다. 언어 사전의 큰 특징은 단어가 알파벳 순서대로 정렬되어 있습니다.
아래 SQL문으로 통해서 테이블의 특정 컬럼을 PK로 변경하실 수 있습니다.
ALTER TABLE member
ADD CONSTRAINT
PRIMARY KEY(mem_name); -- 클러스터형 인덱스 생성
기본 키(PK) 변경 시 주의할 점
이미 대용량의 데이터가 있는 상태에서 기본 키를 지정하면 안됩니다. 하시려면 똑같은 DB를 생성한 후 전문가가 신중하게 진행해야 합니다. 실제 서비스 중인 회사에서 기본 키를 변경할 경우 데이터베이스(자산)에 막대한 손해를 입히게 됩니다.
정렬되지 않는 보조 인덱스
- 보조 인덱스는 여러 개를 만들 수 있습니다.
- 보조 인덱스 생성 시 마다 DB의 공간을 차지하게 됩니다.
- 꼭 필요한 열에만 보조 인덱스를 생성하셔야합니다.
아래 SQL문으로 특정 컬럼을 UNIQUE로 변경하실 수 있습니다.
ALTER TABLE member
ADD CONSTRAINT
UNIQUE (컬럼_이름);
'데이터베이스 > SQL: 정리' 카테고리의 다른 글
[SQL] 인덱스의 사용 방법 정리 (0) | 2024.01.05 |
---|---|
[SQL] 인덱스의 내부 작동 정리 (0) | 2024.01.05 |
[SQL] 뷰(View) 정리 (0) | 2024.01.04 |
[SQL] 제약 조건(PK, FK, UNIQUE, CHECK, DEFAULT, NOT NULL) 정리 (0) | 2024.01.04 |
[SQL] 테이블 만드는 방법 정리 (0) | 2024.01.04 |