• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

3번문제 질문드립니다.

22.06.23 20:23 작성 조회수 84

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
 
안녕하세요.
 
3번문제에서 저는 위에걸로 했고 홍팍님은 강의에서 밑에걸로 하셨습니다.
 
JOIN에서 users.nickname ="홍팍"으로 하는 것과
WHERE에서 저처럼 하는 것은 어떤 차이가 있고 어떻게 하는 것이 더 좋은 방법일까요?
 
감사합니다.
 
 
SELECT
users.nickname AS "주문자명",
orders.id AS "주문번호",
payments.amount AS "결제금액"
FROM
users
JOIN orders ON
orders.user_id = users.id
LEFT JOIN payments ON
payments.order_id = orders.id
WHERE users.nickname = '홍팍'
;
========================
SELECT
users.nickname AS "주문자명",
orders.id AS "주문번호",
payments.amount AS "결제금액"
FROM
users
JOIN orders ON
orders.user_id = users.id
AND users.nickname = '홍팍'
LEFT JOIN payments ON payments.order_id = orders.id
;

답변 1

답변을 작성해보세요.

0

두 방법 모두 같은 결과를 만드는데요.
여기서 생각해볼 점은
쿼리의 수행 시간과 가독성입니다.

위쪽 저의 코드를 A,
아래쪽 학운님의 코드를 B라 할 때,

A는 개념 전달을 위한
가독성에 초점을 맞춘 쿼리,

B는 퍼포먼스 향상
즉, 수행 시간 최적화를 고려한 쿼리라
볼 수 있겠습니다.

PS.
두 쿼리의 실제 속도는
DBMS의 쿼리 최적화에 따라
다를 수도, 같을 수도 있습니다.