오라클 페이징

2018. 2. 15. 11:15· DB/Oracle

오라클은 MySql 에서 지원하는 order by LIMIT 를 지원하지 않아 페이징 처리 속도가 느리다.

알려진 오라클 페이징 기법을 테스트 하여 속도를 비교해 보자

SAMPLE 테이블에 100만건의 데이트를 입력 후 10개씩 보여지는 마지막 페이지를 조회
정렬 조건은 PRIMARY KEY DESC 정렬

1. 페이지 수를 계산하여 셀렉트

SELECT B.* FROM (
SELECT 
CEIL(ROWNUM/10) PAGE
--, COUNT(*) OVER() AS TOTAL_COUNT
, A.* FROM (
SELECT * FROM OP_SAMPLE 
ORDER BY ID DESC
) A
) B
WHERE PAGE = 100000;


100만 건인 경우 수행시간 : 1.327초, TOTAL_COUNT 까지 조회시 : 3.848초
10만 건인 경우 수행시간 : 0.135초 TOTAL_COUNT 까지 조회시 : 0.255초



2. ROW_NUMBER()를 이용한 페이징

SELECT * FROM (
SELECT A.*, ROW_NUMBER() OVER(ORDER BY ID DESC) AS NUM 
FROM OP_SAMPLE A
)
WHERE NUM BETWEEN 999991 AND 1000000;

100만 건인 경우 수행시간 : 1.136초
10만 건인 경우 수행시간 : 0.253초



3. ROWNUM을 이용한 페이징

SELECT * FROM ( 
SELECT ROWNUM AS RNUM, Z.* FROM ( 
SELECT * FROM OP_SAMPLE ORDER BY ID DESC
) Z WHERE ROWNUM <= 1000000 
) WHERE RNUM >= 999991;

100만 건인 경우 수행시간 : 0.826초
10만 건인 경우 수행시간 : 0.087초



4. ROWNUM + 인덱스를 이용한 페이징

SELECT * FROM ( 
SELECT /*+ INDEX_DESC(Z OP_SAMPLE_PK) */ ROWNUM AS RNUM, Z.* FROM ( 
SELECT * FROM OP_SAMPLE
) Z WHERE ROWNUM <= 1000000 
) WHERE RNUM >= 999991;

100만 건인 경우 수행시간 : 0.687초
10만 건인 경우 수행시간 : 0.079초



참고로 MySql 쿼리 조회시 (mysql 5, innoDB)

SELECT * FROM OP_SAMPLE 
ORDER BY ID DESC LIMIT 999991, 10;

100만 건인 경우 수행시간 : 0.033초


 출처 : http://dbclose.tistory.com/75

728x90
반응형

'DB > Oracle' 카테고리의 다른 글

tnsping  (0) 2018.02.15
오라클 키워드 추출하는 쿼리  (0) 2018.02.15
순위함수  (0) 2018.02.15
오라클 특수문자 검색  (0) 2018.02.15
패키지 내에서 사용 테이블 정보 출력  (0) 2018.02.15
'DB/Oracle' 카테고리의 다른 글
  • tnsping
  • 오라클 키워드 추출하는 쿼리
  • 순위함수
  • 오라클 특수문자 검색
공손(gongson)
공손(gongson)
모든건 나의 마음으로부터 나오는 것임을...
공손(gongson)
WEBGLE
공손(gongson)
전체
오늘
어제
  • 분류 전체보기 (163)
    • AI (1)
      • LangChain (1)
    • DB (49)
      • Oracle (36)
      • Mssql (13)
    • Language (30)
      • Java (8)
      • Jsp (3)
      • Javascript (4)
      • Nodejs (1)
      • Python (14)
    • Algorithm (0)
    • UIUX (3)
      • css (0)
      • html (2)
      • html5 (0)
      • bootstrap (1)
    • Server (5)
      • linux (3)
      • window (2)
    • WAS (2)
      • tomcat (2)
    • Framework (6)
      • spring (3)
      • ibatis (3)
    • Tools (7)
      • Eclipse (5)
      • Toad (1)
      • Git (0)
      • VS Code (1)
    • Office (2)
      • Excel (0)
      • browser (2)
    • 용어사전 (26)
    • 자료실 (5)
    • 강좌 (10)
      • javascript 기초 (10)
    • Etc (14)
      • 개발이야기 (4)
      • 좋은글 (4)
      • 기타 (6)

블로그 메뉴

  • 홈
  • 글쓰기
  • 태그

인기 글

태그

  • AI
  • AI용어
  • JavaScript
  • langchain
  • 오라클

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
공손(gongson)
오라클 페이징
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.