본문 바로가기

마케터를 위한 코딩

빠른 SQL 쿼리 실행을 위한 인덱싱과 성능 최적화 예시 쿼리문

https://springkim.com/entry/%EB%8D%94-%EB%B9%A0%EB%A5%B8-SQL-%EC%BF%BC%EB%A6%AC-%EC%8B%A4%ED%96%89%EC%9D%84-%EC%9C%84%ED%95%9C-%EC%9D%B8%EB%8D%B1%EC%8B%B1%EA%B3%BC-%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94

 

더 빠른 SQL 쿼리 실행을 위한 인덱싱과 성능 최적화

데이터베이스의 효율적인 관리와 빠른 쿼리 응답속도는 모든 데이터 중심 애플리케이션에서 중요합니다. SQL 쿼리 성능을 최적화하는 가장 효과적인 방법 중 하나는 올바른 인덱싱 전략을 적용

springkim.com

 

이전 글에서 더 빠른 SQL 쿼리 실행을 위한 개념을 다뤄봤는데요.

 

이번에는 예시 쿼리문을 통해 어떻게 쿼리 향상이 가능한지 알아보겠습니다.

 

예1) 적절한 컬럼에 인덱스 생성

고객 테이블에서 자주 검색되는 'last_name' 컬럼과 'email' 컬럼에 인덱스를 생성하여 검색 성능을 향상시키는 예시입니다.

CREATE INDEX idx_name ON customers(last_name);
CREATE INDEX idx_email ON customers(email);

 

이 인덱스들은 고객의 이름 또는 이메일을 기준으로 데이터를 자주 검색할 떄 유용합니다.

 

 

예2) 다중 컬럼 인덱스

주문 테이블에서 고객 ID와 주문 날짜를 함께 자주 조회한다면, 다음과 같이 다중 컬럼 인덱스를 생성할 수 있습니다.

CREATE INDEX idx_customer_order ON orders(customer_id, order_date);

 

이 인덱스는 쿼리에서 customer_id와 order_date를 함께 사용할 때,

특정 고객이 특정 기간동안의 주문을 조회할 때 성능 향상을 도모할 수 있습니다.

 

예3) 인덱스를 활용한 효율적인 쿼리

직원의 부서 별로 최고 급여를 받는 직원을 찾는 쿼리입니다.

이 쿼리는 인덱스를 활용해 employee테이블의 department와 salary 컬럼에서 빠르게 데이터를 찾을 수 있습니다.

SELECT department, MAX(salary) AS max_salary
FROM employees
GROUP BY department;

 

이 쿼리를 실행하기 전에 다음과 같이 department와 salary에 대한 인덱스를 생성하면 성능이 향상됩니다.

CREATE INDEX idx_department_salary ON employees(department, salary);

 

 

예4) 쿼리 최적화

고객 테이블에서 특정지역(서울)에 사는 고객들의 이메일만을 선택하는 쿼리입니다.

불필요한 데이터를 읽지 않도록 필요한 컬럼만 지정합니다.

SELECT email
FROM customers
WHERE city = '서울';

 

이 쿼리는 city 컬럼에 인덱스가 있다면 훨씬 빠르게 실행됩니다.

CREATE INDEX idx_city ON customers(city);

 

 

 

위 4가지 예시 쿼리들은 인덱싱과 성능 최적화의 기본적인 방법을 보여줍니다.

적절한 인덱스를 사용하고, 쿼리 효율적으로 작성함으로써 SQL 쿼리의 실행 속도를 크게 향상시킬 수 있습니다.

반응형