패스잇
백엔드 개발 · 중급

SQL 쿼리 성능 최적화를 위한 방법들에 대해 설명해주세요.

힌트 · 실행 계획, 인덱스, 쿼리 리팩토링 등을 생각해보세요.

인덱싱쿼리 계획실행 계획파티셔닝정규화/비정규화

모범답안

SQL 쿼리 성능 최적화는 데이터베이스 성능 향상에 중요한 부분입니다. 몇 가지 방법을 말씀드리겠습니다.

첫째, 인덱싱을 활용합니다. WHERE절이나 JOIN 조건에 자주 사용되는 컬럼에 인덱스를 생성하면 검색 속도를 크게 향상시킬 수 있습니다. 하지만 과도한 인덱스는 오히려 성능 저하를 일으킬 수 있으므로 신중하게 선택해야 합니다.

둘째, 쿼리 실행 계획을 분석합니다. EXPLAIN 명령어를 사용하여 쿼리가 어떻게 실행되는지 확인하고, 비효율적인 부분을 찾아 쿼리를 수정합니다. 예를 들어, 풀 테이블 스캔이 발생하는 경우 인덱스 추가를 고려해볼 수 있습니다.

셋째, 쿼리 리팩토링을 통해 성능을 개선할 수 있습니다. 불필요한 JOIN을 줄이거나, 서브쿼리 대신 JOIN을 사용하는 등 쿼리 구조를 변경하여 성능을 향상시킬 수 있습니다.

넷째, 데이터베이스 파티셔닝을 고려할 수 있습니다. 대용량 테이블의 경우 파티셔닝을 통해 데이터를 분할하여 쿼리 성능을 향상시킬 수 있습니다.

마지막으로, 정규화/비정규화를 적절히 활용합니다. 정규화는 데이터 중복을 줄여 데이터 무결성을 높이지만, JOIN 연산이 많아질 수 있습니다. 반대로 비정규화는 JOIN 연산을 줄여 성능을 향상시킬 수 있지만, 데이터 중복이 발생할 수 있습니다. 상황에 맞게 적절한 방법을 선택해야 합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 데이터베이스 면접 질문

← 데이터베이스 면접 질문 전체 보기