안녕하세요.
다른 디비를 사용하다 오라클 디비를 접하게 되니 혼란스러움이 극에 달하고 있습니다.
우선, limit/top의 기능이 없어 rownum 을 가지고 한다는 부분에 크게 경악을 하게 되었네요..
아래 두개의 쿼리의 결과가 다르게 나오는데요..
1. select a,b,c from table where rownum <= 4 order by a desc
2. select * from (select a,b,c from table order by a desc) abctable where rownum <= 4
제가 알고있는 내용은 select * from ( SELECT 결과 ) A 로 서브쿼리 형식으로 진행을 하게 되면 메모리 사용이 증가하여
결과적으로 퍼포먼스에 영향을 미치는 것으로 알고 있습니다. (SELECT 결과) 의 량이 많을 수록, 빈번할수록 부하가 엄청 커지는 것으로 알고있어
위와 같은 구조가 좋지 못한 구조로 알고 있는데, 오라클에서는 달리 방법이 없는 것으로 나타나고 있어 다른 방법이 있는지 문의 드립니다.
구하고자 하는 결과는 2번에 대한 결과입니다.
정렬을 진행한 후 해당 결과를 원하는 수량으로 짜르기 위한 방법인데요..
일반적으로 이런경우 어떻게 진행을 하시나요??
아.. 추가적으로 제가 알고있는 서브쿼리 형식으로 진행하는 것이 부하에 미치는게 맞는지,, 오라클은 예외인가요??
답변 부탁드립니다.
|