MySQL 테이블에 데이터가 10만건 넘으니 SELECT가 느려졌습니다. 인덱스를 걸라고 하는데, 모든 컬럼에 걸어도 되나요? 어떤 기준으로 인덱스를 만들어야 하나요?
인덱스는 WHERE, JOIN, ORDER BY에 자주 쓰이는 컬럼에 걸어야 합니다.
-- EXPLAIN으로 쿼리 분석EXPLAIN SELECT * FROM users WHERE email = "test@test.com";-- 인덱스 추가ALTER TABLE users ADD INDEX idx_email (email);-- 복합 인덱스 (자주 함께 쓰는 컬럼)ALTER TABLE orders ADD INDEX idx_user_date (user_id, created_at);
댓글 4
인덱스는 WHERE, JOIN, ORDER BY에 자주 쓰이는 컬럼에 걸어야 합니다.
인덱스 걸어야 할 때- WHERE 조건에 자주 사용되는 컬럼
- JOIN의 ON 조건 컬럼
- ORDER BY 컬럼 (정렬 속도 향상)
인덱스 걸면 안 되는 경우