READ 성능은 좋아지지만, 데이터 수정 (INSERT, UPDATE, DELETE) 시 추가 비용이 발생하기에 무분별한 Index 생성은 지양해야 한다
Composite, 복합 Index 같은 경우는 아래 점들을 주의해야 한다
아래 예시 쿼리로는 100만건의 데이터가 있다 가정할 때, Index 유무에 따라 조회 시간의 차이가 벌어진다
CREATE TABLE user (
number INT NOT NULL AUTO_INCREMENT,
id VARCHAR(20) NOT NULL,
nickname VARCHAR(30) NOT NULL,
PRIMARY KEY (number),
KEY idKey (id)
);
# Index를 타지 않을때, 30초 정도 소요
SELECT *
FROM user
WHERE id like 'test%'
LIMIT 10000, 100;
# Index를 태울 때, 0.5초 정도 소요
SELECT r.*
FROM (
SELECT number
FROM user
WHERE id like 'test%'
LIMIT 10000, 100
) u JOIN user r ON u.number = r.number;