인덱스가 무엇일까
WHERE 조건문과의 차이점
정리
✅ WHERE 조건문은 인덱스가 아니다.
✅ WHERE 조건문이 인덱스를 활용할 수도 있다. (하지만 항상 그런 것은 아님)
✅ 인덱스를 활용하려면 적절한 컬럼에 인덱스를 설정해야 한다.
✅ 함수나 연산이 포함되면 인덱스가 제대로 작동하지 않을 수도 있다.
즉, 인덱스는 데이터 검색을 빠르게 하는 도구이고, WHERE 절은 특정 조건에 맞는 데이터를 필터링하는 SQL 문법입니다
OPEN SQL 예시
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
name VARCHAR(100),
department VARCHAR(50),
salary INT
);
CREATE INDEX idx_department ON employees(department);
SELECT * FROM employees WHERE department = 'HR';
🔹 인덱스 활용 가능:
department 컬럼에 인덱스가 있기 때문에 빠르게 조회 가능
데이터가 많을 경우, 인덱스를 활용하여 특정 부서만 빠르게 찾음
인덱스를 사용하지 않을 경우
다중 컬럼 인덱스 (Composite Index)
CREATE INDEX idx_department_salary ON employees(department, salary)
인덱스 활용 가능
🔸 주의:
department가 먼저 사용되지 않으면 인덱스가 최적화되지 않을 수 있음
다중 컬럼 인덱스는 설정된 순서대로 활용하는 것이 중요
➡ 해결 방법: 조회 패턴을 고려해서 인덱스를 설계해야 함
결론
✅ WHERE 절은 데이터를 필터링하지만, 인덱스를 자동으로 사용하지는 않는다.
✅ 인덱스가 설정된 컬럼에 대해 적절한 방식으로 검색하면 성능이 향상된다.
✅ 연산이나 함수(예: UPPER(), salary + 1000 등)를 사용하면 인덱스가 비효율적일 수 있다.
✅ OR 조건보다는 UNION을 사용하거나 다중 컬럼 인덱스를 고려할 수 있다.
✅ LIKE 검색에서 %의 위치에 따라 인덱스 활용 여부가 달라진다.
🚀 인덱스를 잘 활용하면 SQL 성능이 크게 향상될 수 있으므로, WHERE 조건을 최적화하는 것이 중요합니다!