🖥️ Back/MySQL

인덱스

지구용사 2025. 6. 30. 20:06

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 성능 최적화 입문/실전

https://inf.run/DzjSq