INDEX
인덱스란 데이터 베이스 테이블에서 검색 성능 속도를 높여주는 자료구조이다.
더 직관적으로 표현하면 데이터를 찾기 위해 특정 컬럼을 기준으로 미리 정렬해놓은 표이다.
그래서 주로 WHERE, ORDER BY, JOIN, GROUP BY 등에 사용되는 컬럼에 설정한다.
만약 인덱스가 없다면 테이블 전체를 일일이 다 뒤져야한다.
인덱스가 있다면 필요한 위치를 빠르게 찾아가기 때문에 조회 속도가 빨라진다.
1만개의 데이터가 있는 USERS 테이블이 있다.
이중에서 age가 23인 사람을 찾을려고한다.
인덱스 없이 조회를 하면 1만개의 데이터를 일일이 다 확인하기때문에 오래걸린다.
SELECT * FROM users
WHERE age = 23;
#0.141초
나이순으로 정렬된 표(= 인덱스)가 있다면 23로 시작하는 지점과 24살로 시작하는 지점만 찾은 뒤에 데이터를 가져오면 되기 때문에 데이터를 더 빠르게 조회할 수 있다.
#인덱스 생성
#CREATE INDEX 인덱스명 ON 테이블명 (컬럼명);
CREATE INDEX idx_age ON users(age);
SELECT * FROM users
WHERE age = 23;
#0.015초
인덱스 조회
#SHOW INDEX FROM 테이블명;
SHOW INDEX FROM users;
PK
테이블에서 특정 데이터를 식별하기 위해 기본키(Primary Key)를 설정한다.
테이블은 PK를 기준으로 정렬을 해서 데이터를 보관한다. 이를 클러스터링 인덱스라고 한다.
UNIQUE
해당 제약조건을 추가하면 자동으로 인덱스가 생성된다.
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) UNIQUE
);
이러한 UNIQUE 특징으로 생성된 인덱스를 고유인덱스라고 부른다.
JSCODE, MySQL 성능 최적화 입문/실전
'🖥️ Back > MySQL' 카테고리의 다른 글
실행 계획(EXPLAIN) 활용 (0) | 2025.07.01 |
---|---|
대규모 데이터 생성 (0) | 2025.06.30 |
SQL 구조 (0) | 2025.06.30 |
Entity 1:1, 1:N, M:N (0) | 2025.06.26 |
NOT EXISTS, EXISTS (0) | 2024.10.30 |