DB에서 데이터를 5개만 가져오고 싶은데요..
현재
select num,name from board where rownum between 0 and 5 order by num desc
이렇게 하였는데 0번째줄부터 5개만 가져오고있습니다.
근데전.. 제일 최근에 올라온 게시물을 5개 뽑아오고싶은데요
어떻게 해야되는지 모르겠어요..
안녕하세요.
rownum 은 order by 가 수행되기 전에 수행되므로 원하는 결과와 달라집니다. 정렬후 5개만 가져오시려면 rownum 은 제거하고 order by num desc for orderby_num() between 1 and 5 와 같이 하시면 됩니다.
참고적으로 정렬을 할 경우 속도가 많이 떨어질수 있으므로 인덱스를 이용한 정렬 효과를 으용하시면 됩니다. 아울러 내림차순 정렬일 경우 일반 인덱스가 아닌 역방향(내림차순) 인덱스를 사용하면 됩니다. 방법은 아래와 같습니다.
1. 역방향인덱스(reverse index) 생성 : create index r_num board(num)
2. 역방향 인덱스 사용하도록 질의 수정. 조건이 있어야 하므로 조건 추가 및 해당 인덱스를 사용하도록 인덱스힌트(using index) 사용
where num >= 0 and rownum between 1 and 5
using index r_num(+)
>DB에서 데이터를 5개만 가져오고 싶은데요..
>
>현재
>select num,name from board where rownum between 0 and 5 order by num desc
>이렇게 하였는데 0번째줄부터 5개만 가져오고있습니다.
>근데전.. 제일 최근에 올라온 게시물을 5개 뽑아오고싶은데요
>어떻게 해야되는지 모르겠어요..