INDEX
처리 속도를 향상시키기 위해서 컬럼에 대해 생성하는 객체
종류
1. Clustered Index
- 기본키primary key 컬럼은 기본적으로 클러스터형 인덱스가 생성됨
- 테이블 데이터는 기본키 컬럼을 기준으로 정렬되고 트리 구조의 일련의 데이터 페이지에 물리적으로 저장
- 데이터베이스 엔진이 해당 기본키의 행을 쉽게 찾을 수 있게 함
2. Non-Clustered Index
- 특정 컬럼을 보조 인덱스로 생성
- 데이터 페이지가 없고 키 값과 행 로케이터가 있다.
- 컬럼에 유니크 제약을 넣으면 보조 인덱스 생성됨
- 먼저 보조 인덱스로 해당 컬럼의 값을 찾고 그 값이 가지고 있는 기본키primary key 값으로 클러스터 인덱스를 찾아 실제 데이터 행을 찾는다.
인덱스 생성
인덱스 생성 경우 :
- 데이터가 엄청 큼
- 조인(성능을 많이 잡아먹는)이 사용됨
인덱스 생성 컬럼 :
- 중복이 없거나 적은 컬럼
- 자주 사용되는 컬럼에 인덱스 생성
인덱스 장단점
장 : 검색 속도 빨라짐.
단 : 인덱스를 위한 추가 공간이 필요. 검색 외 INSERT, UPDATE, DELETE가 빈번한 테이블에서는 오히려 성능 저하 발생
인덱스 쿼리
인덱스 확인 : SHOW INDEX FROM 테이블명;
인덱스 생성 :
- 테이블 생성시
CREATE TABLE 테이블명 (
컬럼1 타입,
컬럼2 타입,
INDEX 인덱스명(컬럼1),
UNIQUE INDEX 인덱스명(컬럼2)
);
- 테이블 생성 후
CREATE INDEX 인덱스명 ON 테이블명(컬럼);
ALTER TABLE 테이블명 ADD INDEX 인덱스명(컬럼);
인덱스 삭제 :
ALTER TABLE 테이블명 DROP INDEX 인덱스명;
ALTER TABLE 테이블명 DROP INDEX 인덱스명, DROP INDEX 인덱스명,DROP INDEX 인덱스명;
'기술스택 > SQL' 카테고리의 다른 글
MySQL VIEW / CTE WITH / CASE WHEN THEN (0) | 2023.10.11 |
---|---|
MySQL 연산자 우선순위, IN vs EXISTS (0) | 2023.10.11 |
MySQL 함수 (0) | 2023.10.11 |
MySQL 기본 완전 정리 (0) | 2023.10.05 |
SQL, JDBC, DBMS, DB란? (0) | 2023.09.04 |