mysqlqueryindex
MySQL 쿼리 기본과 인덱스 설계
조회 0
MySQL에서 성능 좋은 쿼리를 작성하려면 기본 문법 + 인덱스 구조 + 실행 계획(EXPLAIN) 세 가지를 같이 이해해야 합니다.
이 글에서는 가장 자주 쓰는 SELECT 쿼리 패턴과, 인덱스 설계 시 꼭 챙겨야 할 포인트를 정리합니다.
1. 기본 SELECT 쿼리 패턴
SELECT id, name, status
FROM users
WHERE status = 'ACTIVE'
AND created_at >= '2026-01-01'
ORDER BY created_at DESC
LIMIT 20 OFFSET 0;
- WHERE: 필터링 조건
- ORDER BY: 정렬 기준
- LIMIT/OFFSET: 페이징
실무에서는 SELECT * 대신 필요한 컬럼만 명시해서 가져오는 습관을 들이는 것이 좋습니다.
2. 인덱스의 기본 개념
- 인덱스는 책의 목차와 비슷한 개념입니다.
- 특정 컬럼(또는 컬럼 조합)에 대해 **정렬된 구조(B+Tree)**를 유지하면서 검색을 빠르게 해 줍니다.
CREATE INDEX idx_users_status_created_at
ON users (status, created_at);
위 인덱스는 다음과 같은 쿼리에 잘 맞습니다.
SELECT *
FROM users
WHERE status = 'ACTIVE'
AND created_at >= '2026-01-01'
ORDER BY created_at DESC
LIMIT 20;
- 인덱스 선두 컬럼(여기서는
status) 조건을 WHERE 절에서 사용하는 것이 매우 중요합니다.
3. EXPLAIN으로 실행 계획 보기
EXPLAIN
SELECT id, name
FROM users
status
created_at ;