인라인뷰 에서 정렬을 사용할때.... 0 3 2,224

by 아카시아향기 [SQL Query] [2013.11.19 16:32:04]


질문에 앞서 지난번에 답변 주신분들께 감사하단 말씀 드리고 싶네요. ^^
지난번에 이어서 또다른 궁금증이 있어서 질문을 드립니다.
검색해보니 인라인뷰에서 하는 order by 기능은 오라클 만의 특징이라는 글이 보이더라구요.
그래서 그런지 검색해도 잘 나오지도 않고......

오라클에서 인라인뷰를 사용해서 ORDER BY 를 하고 그에 따른 조인을 하게되면
인라인뷰에서 ORDER BY 한걸 기준으로 해서 정렬이 되는건가요?

FROM절 안에서의 정렬이 특수한 상황이다보니 비슷한 사례를 찾기가 힘드네요.

by 용근님 [2013.11.19 16:56:22]

조인방식이나 Group by 등에 따라서 정렬을 보장할수도 아닐수도 있습니다.

by 아카시아향기 [2013.11.19 17:50:54]

좀더 검색한 결과로는 이퀄 조인의 경우에는 정렬을 보장한다고 하네요.
(저의 경우에는 이퀄 조인의 케이스가 궁금해서.... ㅎㅎ)
조인후에 해당 결과에 대한 가공이 더 이루어진다면 어떻게 될지는 모르겠지만......
혹시라도 제가 찾아본 결과가 잘못되었거나 부가 설명 해주실분은 부탁드리겠습니다.

by 마농 [2013.11.19 19:39:18]

이해하신 내용은 맞지 않습니다.
정렬결과를 인라인뷰로 사용할 경우
정렬결과를 드라이빙 테이블로 NL 조인을 해야만 정렬이 유지됩니다.
(그나마 11G R2 부터는 NL 조인의 정렬도 보장되지 않습니다.)
해시조인을 하면 정렬이 유지되지 않죠.
이는 조인의 동작원리를 이해하셔야만 이해하실 수 있는 내용입니다.

인라인뷰에서 정렬이 필요한 경우는 Top N 쿼리 이외에는 거의 필요하지 않습니다.
인라인 뷰 안에서의 정렬이 정말 필요한지를 명확하게 판단하셔야 합니다.
정렬은 최종 한번만 하시는게 좋습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입