강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

g_a_m_e_님의 프로필 이미지
g_a_m_e_

작성한 질문수

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

댓글 무한 depth - 목록 API 구현

실제 실무에서도 이런식으로 쿼리를 작성하는지 궁금합니다!

해결된 질문

작성

·

19

0

  • 학습 관련 질문을 최대한 상세히 남겨주세요!

  • 고민 과정도 같이 나열해주셔도 좋습니다.

  • 먼저 유사한 질문이 있었는지 검색해보세요.

  • 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

안녕하세요.

향로님의 추석 챌리지에서 우연히 제목을 보고 바로 구매했는데 아직 완강하지는 못했지만 정말 좋은 강의 같습니다!

선배 개발자님이 개발하시는 느낌으로 보고있습니다! ㅎㅎ

궁금한 점은 혹시 실무에서도 이런식으로 서브쿼리를 이용해서 대규모 데이터에 대해서 처리를 하는지가 궁금해져서 질문 남겨봅니다!

답변 2

0

쿠케님의 프로필 이미지
쿠케
지식공유자

g_a_m_e_님, 안녕하세요!

열심히 잘 수강해주셔서 감사합니다!

 

실무에서도 커버링 인덱스에 대해 최적화가 필요하다면, 이런 식으로 서브쿼리를 흔히 사용합니다.

강의에서 설명드리는 페이지 번호 방식의 목록성 데이터는 위와 같은 쿼리가 일반적이라고 봐주시면 될 것 같네요.(DB에 따라서 offset/limit 문법을 지원하지 않을 수도 있지만, 결국 InnoDB의 동작 원리만 이해하고 있다면 모두 유사하게 최적화할 수 있습니다.)

물론, 시스템 전체적인 관점에서 본다면 서브쿼리뿐만 아니라 다른 해결책도 많습니다.(부하를 다른 곳에 분산하거나 성능을 더욱 높인다든지 등의 관점이고, "게시글 조회 최적화" 챕터에서 학습하게 됩니다.)

참고로 이 부분은 당연히 인지하시겠지만, 모든 경우에 대해서 서브쿼리가 적절하다는 것은 아니고,

목록성 데이터 조회 요구사항의 최적화에서 적절했다는 의미입니다!

서브쿼리는 중간 임시 테이블을 만들어낼 수도 있고 잘못 사용하면 오히려 문제가 될 수 있기 때문에,

실제 사용하고자하는 쿼리에 대해서는 플랜도 분석해 보시고 검수하신 후에 채택하시면 될 것 같습니다.

 

0

안녕하세요, 인프런 AI 인턴입니다. g_a_m_e_님.

강의 중에 서브쿼리를 이용한 대규모 데이터 처리 방식에 대해 궁금하신 점이 있으시군요. 실무에서 서브쿼리는 특정한 쿼리 상황이나 성능 최적화가 필요한 경우에 유용하게 사용됩니다. 하지만 무조건적인 적용은 지양해야 하며, 상황에 맞는 최적화 방안을 고려하는 것이 중요합니다.

서브쿼리 사용의 이점과 주의점:

  1. 복잡한 연관 관계 데이터 처리:

    • 서브쿼리는 복잡한 데이터의 연관 관계를 처리할 때 유용하게 사용될 수 있습니다. 특히, 특정 조건의 데이터 필터링이나 집계 작업에서 효과적입니다.
  2. 성능 최적화:

    • 제대로 설계된 서브쿼리는 데이터베이스의 성능을 크게 향상시킬 수 있습니다. 하지만 잘못 사용될 경우 쿼리 성능을 저하시킬 수 있으므로, 적용 전에 충분한 테스트와 고려가 필요합니다.
  3. 대규모 트래픽 처리:

    • 대규모 트래픽 환경에서는 서브쿼리를 사용하더라도, 애플리케이션 레벨에서 추가적인 로직 최적화가 요구될 수 있습니다.

실무에서는 최적화와 유지보수성의 균형을 맞추고 팀 기준에 따라 서브쿼리를 사용할지를 결정합니다. 특히, 유지보수성과 읽기 쉬운 코드가 요구되는 환경에서는 ORM 라이브러리나 Query DSL을 사용하여 쿼리를 추상화하기도 합니다.

또한 관련된 내용을 다룬 강의나 질문 게시물을 참조하시면 도움이 될 수 있습니다. 다음 게시글을 확인해 보시길 권장합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

g_a_m_e_님의 프로필 이미지
g_a_m_e_

작성한 질문수

질문하기