본문 바로가기
🌈 백엔드/데이터베이스

오라클_페이징 hint ROWNUM 인라인뷰

by 개발자 알마 2023. 12. 17.
반응형

 

 

 

[1] 오라클 힌트 hint


(1) 정의

오라클 힌트 hint 

개발자가 DB에 어떤 방식으로 실행해줘야하는지 명시하기 위해 select 문을 전달할때 사용한다 

최적의 실행 경로를 작성하여 지시하는 것 

 

(2) 사용법

시작 = /*+ 

마무리 = */

 

 

[2] hint 종류


(1) full 힌트 

테이블의 모든 데이터를 스캔한다. 검색 속도가 느리다

SELECT /*+ FULL(tbl_board) */ * from tbl_board order by bno desc;

 

(2) INDEX_ASC 힌트 / INDEX_DESC 힌트 

인덱스 순서대로 또는 역순대로 스캔할것인지 지정한다 

SELECT /*+ INDEX_ASC(tbl_board pk_board) */ * from tbl_board WHERE bno > 0

 

 

[3] ROWNUM 


(1) 정의 

어떤 조건에 의해 스캔한 데이터에 일련번호를 메기는 것이다. 

어떤 검색방법으로 데이터를 추출했고 , 그 일련번호는 다 다르다 

// FULL 힌트 사용 
SELECT /*+ FULL(tbl_board) */ rownum rn, bno, title from tbl_board 
WHERE bno>0 order bybno;

// INDEX_ASC 힌트 사용 SELECT /*+ INDEX_ASC(tbl_board pk_board) */ rownum rn, bno, title 
from tbl_board 

// INDEX_DESC 힌트 사용 
SELECT /*+ INDEX_DESC(tbl_board pk_board) */ rownum rn, bno, title from tbl_board 
WHERE bno >0;

// 범위의 데이터를 찾을때 1을 반드시 포함한다 ( rownum >10 and rownum <20 오류가남) 
SELECT /*+ INDEX_DESC(tbl_board pk_board) */ rownum rn, bno, title ,content
from tbl_board WHERE rownum <10;

SELECT /*+ INDEX_DESC(tbl_board pk_board) */ rownum rn, bno, title ,content
from tbl_board WHERE rownum <= 20;

 

[4] 인라인 뷰 In-line View 


(1) 정의

추출한 데이터에 다시 추출하는 방법 

20개의 데이터를 추출했다면 다시 10개의 데이터를 추츨한다 

SELECT bno, title, content FROM (
	SELECT /*+ INDEX_DESC(tbl_board pk_board) */ rownum rn, bno, title , content 
    	FROM tbl_board WHERE rownum <=20)
WHERE rn > 10;

 

 

오라클은 페이징 처리에 인라인뷰를 사용하기 때문에 검색처리는 인라인뷰 내부로 설정해야한다 

반응형

댓글