실행 시간 개선 경험을 수치로 제시한다
학회 프로젝트에서 1년치 거래 데이터를 여러 테이블과 조인해 분석하는 쿼리를 짰는데, 처음에는 실행에 2분 가까이 걸렸습니다. 실행 계획을 확인해보니 조인 조건에 인덱스가 걸려 있지 않아 전체 테이블을 훑고 있다는 것을 발견했고, 인덱스를 추가한 뒤에는 10초 이내로 줄었습니다. 이 경험으로 쿼리를 작성할 때는 결과뿐 아니라 실행 계획까지 확인하는 습관이 필요하다는 것을 배웠습니다.
면접관이 이 한 문장으로 확인하려는 것들. 각 갈래를 알면 답의 뼈대가 잡혀요.
학회 프로젝트에서 1년치 거래 데이터를 여러 테이블과 조인해 분석하는 쿼리를 짰는데, 처음에는 실행에 2분 가까이 걸렸습니다. 실행 계획을 확인해보니 조인 조건에 인덱스가 걸려 있지 않아 전체 테이블을 훑고 있다는 것을 발견했고, 인덱스를 추가한 뒤에는 10초 이내로 줄었습니다. 이 경험으로 쿼리를 작성할 때는 결과뿐 아니라 실행 계획까지 확인하는 습관이 필요하다는 것을 배웠습니다.
인턴 프로젝트에서 여러 테이블을 조인한 복잡한 쿼리를 작성했는데, 팀 리뷰에서 실제로는 필요 없는 테이블까지 조인하고 있다는 지적을 받았습니다. 필요한 컬럼만 남기고 불필요한 조인을 제거하자 쿼리가 훨씬 간결해지고 실행 속도도 개선됐습니다. 이 경험으로 복잡한 쿼리일수록 정말 필요한 데이터가 무엇인지 먼저 정리하는 것이 최적화의 출발점이라는 것을 배웠습니다.
캡스톤 프로젝트에서 여러 단계의 집계가 필요한 쿼리를 짤 때, 처음에는 서브쿼리를 여러 겹 중첩해 성능은 나쁘지 않았지만 팀원이 이해하기 어렵다는 피드백을 받았습니다. 이후 CTE로 단계를 나눠 각 단계가 무엇을 하는지 명확히 드러나도록 재작성했습니다. 성능은 거의 동일하게 유지하면서도 팀원들이 쿼리를 훨씬 쉽게 이해할 수 있게 되었습니다. 이 경험으로 성능뿐 아니라 함께 일하는 사람을 고려한 쿼리 작성도 중요하다는 것을 배웠습니다.
같은 실수가 반복돼요. 이것만 피해도 절반은 갑니다.
진짜 면접은 두 번째 질문부터예요. 이 답 뒤에 따라올 법한 것들.