본문 바로가기

Database , Middleware/MySQL2

[Database] DB Index에 대해 자세히 알아보자 (복합 인덱스, 커버링 인덱스) 인덱스(Index)란데이터베이스에서 인덱스(Index) 는 데이터를 더 빠르고 효율적으로 검색할 수 있도록 돕는 데이터 구조이다.인덱스는 특정 열이나 열들의 값에 대한 빠른 조회를 가능하게 하여 쿼리 성능을 향상시킨다. 풀 스캔(Full Table Scan)위와 같은 테이블이 있을때 이름이 홍길동인 학생을 찾는다고 생각해보자. SELECT * FROM 학생 WHERE 나이 = 20; 이 쿼리를 실행한 후, 테이블을 확인하면서 나이가 20인 행을 찾아야 한다.첫 번째 행에서 나이가 '20'인 학생을 찾았다면, 그 즉시 검색을 멈출까? 아니다.테이블의 끝까지 나이가 '20'이 더 있는지 계속해서 확인해야 한다.이러한 과정을 '풀 스캔(Full Table Scan)'이라고 한다.위의 예시에서는 테이블에 행이 .. 2025. 1. 4.
[MySQL] SQL 최적화와 인덱스 개선으로 API 응답 속도 향상 최근 프로젝트를 진행하면서 600만 건 이상의 아파트 거래 데이터를 다루는 API의 성능을 개선하는 작업을 진행했다.해당 API는 특정 위치(동)에 따른 아파트 거래 내역을 조회하는 기능을 제공하는데, 평균 응답 시간이 약 9초로 매우 느려 성능에 문제가 있었다.SQL 쿼리 최적화와 인덱스를 적용해서 응답 속도를 10ms 이하로 크게 향상시킬 수 있었다.문제: 느린 SQL 쿼리 성능기존에 사용되던 SQL 쿼리는 두 개의 지역 코드(sgg_cd, umd_cd)를 CONCAT 함수로 결합하여 비교하는 방식이었다. 이 방식은 데이터를 처리하는 데 시간이 매우 오래 걸렸고, 특히 인덱스를 효율적으로 활용하지 못해 성능이 떨어졌다. SELECT no, sgg_cd, umd_cd, umd_nm, jibun, .. 2024. 12. 18.