페이징 처리를 하는 이유
페이징을 하는 이유는 최소한의 필요한 데이터만을 가져와서 빠르게 화면에 보여 주기 위함입니다.
데이터베이스에 전달된 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)
'프로그래밍 공부' 카테고리의 다른 글
2022년 6월 29일 스프링 댓글 (0) | 2022.06.29 |
---|---|
2022년 6월 28일 스프링 (0) | 2022.06.28 |
2022년 6월 21일 스프링 복습 (0) | 2022.06.21 |
2022년 6월 20일 스프링 복습 (0) | 2022.06.20 |
2022년 6월 17일 스프링 복습 (0) | 2022.06.17 |