SELECT
쿼리의 검색 성능을 극적으로 향상WHERE
절이나 JOIN
조건에 사용되는 컬럼에 인덱스를 걸면, 풀 테이블 스캔을 피하고 인덱스를 통해 데이터의 위치를 바로 찾아갈 수 있으므로 응답 속도가 매우 빨라집니다.-- 'user_email' 컬럼에 인덱스가 걸려 있다면, 이 쿼리는 매우 빠르게 실행됩니다.
SELECT * FROM users WHERE user_email = 'student@example.com';
SELECT
를 제외한 INSERT
, UPDATE
, DELETE
작업의 성능은 오히려 느려집니다.
책에 새로운 내용을 추가하거나 수정하면, '찾아보기' 페이지도 함께 수정해야 하는 것과 같은 원리입니다.
데이터베이스에 새로운 데이터를 추가(INSERT)하면, 원본 테이블뿐만 아니라 인덱스 테이블에도 새로운 정보를 정렬하여 기록해야 합니다.
데이터를 수정(UPDATE)하거나 삭제(DELETE)할 때도 마찬가지입니다.
따라서, 데이터의 변경이 잦은 컬럼에 인덱스를 무분별하게 추가하면 시스템 전체의 성능이 저하될 수 있습니다.WHERE
절에서 자주 사용되는 컬럼JOIN
에 자주 사용되는 컬럼 (외래 키(Foreign Key)는 보통 자동으로 인덱스가 생성됩니다.)ORDER BY
)에 자주 사용되는 컬럼SELECT
) 속도를 높이기 위한 INSERT
, UPDATE
, DELETE
) 성능이 저하되고 추가 저장 공간이 필요하기 때문에,