rownum 페이징시 100 row 이하로 조회시 느림 0 8 739

by 늅뉴 [SQL Query] rownum 느림 [2022.07.05 11:48:52]


2022-07-05 13 42 11.jpg (122,090Bytes)

안녕하세요. 늅늅입니다.

쿼리가 느려서 찾아 보니 도무지 해결이 안되어 선배님들의 조언을 부탁드립니다.

평범한 페이징입니다.

 

1 ~ 100 데이터를 가지고 올때는 1초로 끝나는데

1 ~ 1000 데이터를 가지고 올때는 1초로 끝나는데

2 ~ 100 데이터를 가지고 올때는 4~5초가 걸립니다.

셋다 실행계획 같은데 왜 이럴까요? 

------------------------------------------

oracle 버젼 : Oracle Database 11g     11.2.0.4.0    64bit Production

DB tool : sqlgate, sqldeveloper

------------------------------------------

SELECT PL.* FROM (
        SELECT LI.*,ROWNUM AS RNUM FROM (
                쿼리....
       
                )LI 
)PL WHERE RNUM BETWEEN 1 AND 100;

-- 1에서 100 페이징시 1초 내외로 끝남

-- 1에서 1000 페이징시 1초 내외로 끝남

-- 2에서 100 페이징시 4~5초 정도 걸림

-- 2에서 1000 페이징시 1초 내외로 끝남

 


 

by 마농 [2022.07.05 13:03:59]
SELECT pl.*
  FROM (SELECT li.*
             , ROWNUM AS rnum
          FROM (
                -- 쿼리.... -- 여기 비효율은 없는지 살펴볼 필요 있음.
                ) li 
         WHERE ROWNUM <= 100    -- 여기 조건 추가 --
        ) pl
 WHERE rnum BETWEEN 2 AND 100
;

 


by 늅뉴 [2022.07.05 13:50:27]

오! 이렇게 하니깐 1초에 끝나네요.

감사 합니다. 

그런데 이건 뭐 때문에 이런건가요? 


by 우리집아찌 [2022.07.05 14:06:57]

전체를 읽은뒤 2에서 100을 읽으니까요.. 

그전에 100까지 자름


by 늅뉴 [2022.07.05 14:27:32]

답변 채택을 잘못 눌렀..네요.. 답변 감사합니다.


by 우리집아찌 [2022.07.05 13:06:04]

실행계획 / SQL / INDEX 정보 전부 올려주세요.


by 늅뉴 [2022.07.05 13:51:45]

첨부로 실행계획 첨부 했습니다.

다른 SQL, INDEX 테이블 정보가 있어서 올리기가  힘드네요.. ㅠㅠ

답변 감사 합니다.


by 우리집아찌 [2022.07.05 14:10:24]

검색되는 양이 많네요.

유니크 인덱스 기준되는 테이블을 기준으로 JOIN 걸어 푸는게 좋을것 같은데요.


by 늅뉴 [2022.07.05 14:27:11]

넵 감사 합니다. 데이터 량을 줄일 방법을 찾아봐야겠네요.

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