with 문을 실제 쿼리에서 사용하면 별로인가요? 0 3 1,615

by 몽키매직 [SQL Query] [2017.11.10 16:20:07]


위에서 with 문으로 테이블을 정해주고

밑에서 

select .. from t where ...

union all

select .. from t where ...

union all

select .. from t where ...

이렇게 하는거랑 with문 없이 원래 테이블을 각각 union all  하는게 나은가요?

 

by 마농 [2017.11.10 17:09:56]

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() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입