• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    미해결

anayltic sql, 조인, 서브쿼리 셋중 어떤걸 쓰던 상관이 없나요?

23.02.26 17:21 작성 조회수 282

0

강사님, 서브쿼리 실습 -01에서 다루셨던것 처럼

위의 3가지 방법(anayltic sql, 조인, 서브쿼리)은 다르지만 결국 같은 값이 나옵니다.

제 생각에는 가장 가독성이 좋은건 where절 서브쿼리 인거 같고, 조인은 불필요한 행까지 다 가져오므로 무거워 질거 같고, 개인적으로 analytic sql 사용시 가장 직관적으로 느껴지기에 이해하기 쉬워서 많이 쓰고 있습니다.

모로 가도 서울만 가면 되긴 하지만, ㅎㅎ 강사님께서 추천해주신다면 어떤걸 쓰는게 현실 업무 혹은 협업 과정에서 좋을까가 궁금해서 질문 드려봅니다!

답변 1

답변을 작성해보세요.

0

안녕하십니까,

질문이 서브쿼리 실습 01의 SQL에 국한된건지 아닌 SQL 전반에 대해서 질문하신 건지 잘 모르겠습니다만,,,,,

강의를 통해서도 잘 알고 계시겠지만, 조인과 서브쿼리는 다릅니다. 조인은 1:M시 M의 집합 레벨로 집합 레벨이 변경되지만 서브쿼리는 메인 쿼리의 집합 레벨을 서브쿼리가 변경하지 않습니다.

where절 서브쿼리가 가장 가독성이 좋게 느끼는건 실습 예제로 주어진 문제가 서브쿼리로 적절하게 사용될 예제를 사용했기 때문입니다.

서브 쿼리를 사용하면 메인 쿼리의 컬럼외에는 추출할 수 없습니다. 서브쿼리는 체크 조건과 같이 메인 쿼리의 결과값을 걸러내는데 주로 사용됩니다. 반면에 조인은 조인 대상 테이블이 서로 동등(?)하므로 어느 테이블의 컬럼이라도 다 가져올 수 있습니다.

이러한 비교가 있다는 것은 강의를 통해서 잘 알고 계실것 같고,,,,

말씀하신대로 서브쿼리가 가독성이 좋습니다. 그리고 메인 쿼리의 집합 레벨을 변경 시키지도 않습니다. 때문에 실무에서 서브 쿼리를 많이 활용합니다. 그런데 서브 쿼리를 불필요하게 남발하는 경향이 생기다 보니 오히려 가독성이 떨어지거나 SQL 성능상에도 문제가 발생하는 사례가 많아지게 됩니다. 뒤에 제가 스칼라 서브쿼리를 설명 드릴텐데, 스칼라 서브쿼리가 도입되면서 한층 더 서브쿼리가 편해진 반면에 조인으로 사용되어야 할 SQL이 스칼라 서브쿼리가 활용되면서 비효율적인 SQL 작성 사례가 늘어나기도 합니다.

정리해서 말씀 드리면, 조인이 가장 기본입니다. 그리고 굳이 다른 테이블의 컬럼을 최종적으로 가져올 필요가 없고 체크 조건이나 Where절의 조건으로 사용된다면 서브쿼리를 이용하면 좋습니다.

analytic SQL은 사용하는 업무가 분석 업무인가 아님 OLTP성 업무인가에 따라 달라질 수 있지만, 분석 업무에서는 analytic SQL을 사용하면 좋습니다.

그리고 질문하신 서브쿼리 실습 예제에서는 당연히 서브쿼리가 더 직관성있는 SQL 작성을 가능하게 합니다.

조인, Analytic SQL, 서브쿼리 각각이 더 나은 선택이 될 수 있는 상황이 다르기 때문에 이들이 어떻게 동작하는지를 이해하셨다면, 좀 더 직관적이고 가독성이 높다고 스스로 판단되시는 것을 선택하시면 될 것 같습니다.

감사합니다.