오라클 페이징 쿼리를  ROW_NUMBER() 사용하지 않고 구현하는 방법이 있나요? 0 1 1,405

by grape111 [SQL Query] paging 페이징 쿼리 오라클 [2020.07.09 00:13:45]


안녕하세요

오라클 페이징 쿼리를  ROW_NUMBER() 사용하지 않고 구현하는 방법이 있나요?

ROW_NUMBER시 order by를 하니 너무 느려서요. . 따로 인덱스도 없고 인덱스만들수 있는 상황도 아니라서요..

쿼리자체로서 성능을 내야하거든요..

아래와 같이 쿼리를 짯는데요. 실제로 정렬숫서는 필요없으니

페이징마다 중복된 데이터 없이 한번씩만 나오기만 하면 되는데요..혹시 페이징 쿼리짤때  ROW_NUMBER()를 사용하지 않고 구현하는 방법이 있을까요?

 

 

SELECT * FROM

(

SELECT

 ROW_NUMBER() OVER(ORDER BY BB.COL1 DESC) RN,  *              

FROM TB BB

)

  WHERE RN BETWEEN ? AND ? 

by 마농 [2020.07.09 10:44:40]

row_number 기능이 생기기 전에는 rownum 을 이용했습니다.
어떤 방식을 사용하든 성능은 차이 없습니다.(단, 쿼리를 잘 작성한 경우에 한해서)
그런데 정렬이 필요 없는 페이징 처리라는게 있는지 의문이네요.
정렬을 뺀다면 rownum 이 확실히 빠를거구요.
정렬이 필요하다면 인덱스가 있어야 빨라집니다.

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