본문으로 바로가기
728x90
반응형

페이징 처리를 하는 이유

페이징을 하는 이유는 최소한의 필요한 데이터만을 가져와서 빠르게 화면에 보여 주기 위함입니다.

 

 

데이터베이스에 전달된 SQL문은 아래와 같은 과정

SQL 파싱 > SQL 최적화 > SQL 최적화

 

order by 보다는 인덱스

인덱스(index)를 이용해서 정렬을 생략하는 방법입니다.


테이블을 생성할 때 제약 조건으로 PK를 지정

데이터베이스에서 PK는 '식별 자'의 의미와 '인덱스'의 의미를 가집니다.

 

 원하는 내용을 위에서부터 혹 은 반대로 찾아나가는데 이를 '스캔(scan)'한다고 표현

 내용이 많지 않을 경우에는 '풀스캔(FULL SCAN)'을 사용

 

인덱스와 오라클 힌트(hint)

'힌트(hint)'라는 것을 사용할 수 있습니다.

힌트는 말 그 대로 데이터베이스에 '지금 내가 전달한 select문을 이렇게 실행해 주면 좋겠습니다'
역순 'order by bno desc'

 

ROWNUM이라는 특별한 키워드를 사용해서 데이터 에 순번을 붙여 사용합니다.

ROWNUM은 무조건 순차적

 

select 앞에 rownum을 붙이면 번호가 없더라도 나온다.

 

이때 번호는 현재 데이터베이스의 상황에 따라서 저장된 데이 터를 로딩하는 것이므로

실습 환경에 따라 다른 값이 나올 수 있음

 

ROWNUM의 한계를 극복하게 해주는 인라인뷰(InlineView)

View는 일종의 가상테이블이며

 

인라인 뷰는 SQL문에서 사용가능한 별칭을 사용하는 서브쿼리이다.

 

인라인뷰는 기본 질의의 FROM절에 명명된 서브쿼리를 사용하는것과 유사하다

 

select * from (
select empno,ename,rownum num from emp order by ename desc)
where num between 5 and 10;

 

인라인뷰

20개의 데이터를 가져오는 SQL을 하나의 테이블처럼 간주

 

rownum을 사용하면서 중간을 끊어 사용하는 방법

select 
bno, title, content 
from (
select /*+INDEX_DESC(tbl_board pk_board)*/
rownum rn,bno,title,content 
from
tbl_board
where rownum <=30)
where rn >20;

 

  • 필요한 순서로 정렬된 데이터에 ROWNUM을 붙인다.
  • 처음부터 해당 페이지의 데이터를 ROWNUM = 30과 같은 조건을 이용해서 구한다.
  • 구해놓은 데이터를 하나의 테이블처럼 간주하고 인라인뷰로 처리한다.
  • 인라인뷰에서 필요한 데이터만을 남긴다.

만들 때는 가장 작은 단위부터 만든다.

 

실행 순서

C > S > M > VO

 

제작 순서

VO > M > S > C

 

페이징 화면처리

  • 브라우저 주소창에서 페이지 번호를 전달해서 결과를 확인하는 단계
  • JSP에서 페이지 번호를 출력하는 단계 
  • 각 페이지 번호에 클릭 이벤트 처리
  • 전체 데이터 개수를 반영해서 페이지 번호 조절

페이징 처리할 떄 필요한 정보

  • 현재 페이지 번호(page) 
  • 이전과 다음으로 이동 가능한 링크의 표시 여부(prev. next)
  • 화면에서 보여지는 페이지의 시작 번호와 끝 번호(startPage, endPage)
728x90
반응형