WITH 문이 유용하긴 하지만 불필요한데도 습관적으로 사용하는 것은 좋지 않습니다.
WITH 문을 사용하는 게 좋은지 나쁜지는 그때그때 상황에 따라 다릅니다.
구체적인 정황 없이 막연한 질문에 대한 답은 "그때그때 달라요" 입니다.
위의 상황은 동일한 집합을 반복 조회하는 형태입니다.
해당 집합을 구하는 쿼리 자체가 복잡하다면? With 문 사용도 고려해 볼만 합니다.
다만, WITH 문을 사용해야 되느냐? 마냐? 라는 판단에 앞서서
UNION ALL 없이 테이블 한번만 읽어서 처리가 가능하지 않을까? 라는 생각이 먼저 듭니다.
by 아발란체
[2017.11.13 13:23:43]
CRUD(입력/조회/수정/삭제) 일반적 로직에서는 특수한 경우가 아니라면 안쓰는 것이 좋을 것 같습니다.
가상 테이블을 꼭 써야 하는 경우라면 대체 방법이 있는지도 검토해보는 것이 좋을 것 같습니다.
by jkson
[2017.11.14 18:19:21]
with 문이 반복 구문 대체로써의 역할도 있고, 실제로 메모리에 결과셋을 올려서 사용하게 해주는 역할도 있고
때로는 쿼리 가독성 때문에 쓰기도 해요.
union 의 경우에는 결과셋을 메모리에 올리게 될 확률이 조금 더 커보이는데요.
해당 결과셋의 크기가 아주 크다면 비효율적입니다.
해당 결과셋을 다시 where 조건으로 필터링하게 되기 때문에 성능상 좋지 않을 확률이 크죠.
결과셋이 작다면 union 시에도 유용할 확률이 높죠.
이게 좋다 저게 좋다 단언할 수 없습니다. 정말로 그때그때 다릅니다ㅋㅋ
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.