23.10.14 14:34 작성
·
306
·
수정됨
0
안녕하세요?
주문별 연관 상품 추출 SQL에서
SELECT a.order_id, a.product_id, b.product_id
from ga.order_items a
join ga.order_tems b
on a.order_id = b.order_id
where a.product_id <> b.product_id
위 코드와 같이 where 절 안에서 같은 product_id가 조인 되는 경우를 filtering 하였습니다.
혹시 join 조건절에서(아래 sql과 같이) filtering 하지 않고 where 절에서 하는 이유가 있을까요?
SELECT a.order_id, a.product_id, b.product_id
from ga.order_items a
join ga.order_tems b
on a.order_id = b.order_id and a.product_id <> b.product_id
답변 2
0
0
2023. 10. 14. 23:39
안녕하십니까,
음. 이걸 where절이 아닌 조인절에서 하면 더 부자연스러울 것 같습니다. 물론 조인절에서 해도 되지만 조인절은 연결을 위한 조건으로 where절은 filtering하는 조건을 사용하는 것이 좀 더 명확해 보일 것 같습니다.
또한 조인절에 = 이 아닌 다른 조건( >, <, <>)을 사용하면 Hash join으로 풀리지 않고 Sort Merge 조인으로 풀려서 SQL 수행 시간이 좀 더 걸릴 수도 있습니다.
감사합니다.