부분범위처리 전체범위처리 개념
부분범위처리 = 코스요리
요리가 될때마다 하나씩 나옴
전체범위처리 = 한상차림
한번에 빠바박!
판단
select * from emp;
언뜻 보면 전체 범위 처리가 더 맞는것 같지만
row를 하나씩 지날때마다 바로 나타낼수 있기때문에 부분범위처리이다
(보내는 사이즈는 set arraysize로 크기조절이 가능하다)
select * from emp order by sal;
하나씩 조건을 맞춘다고 해도 끝에서 sal을 기준으로 정렬을 해야하기 때문에 바로 보낼수 없다
한번에 모아서 보내야한다 따라서 전체범위처리이다
다음 쇼핑몰 홈페이지를 들어간다고 가정하자
db에는 200개의 데이터
한 페이지에는 표시할수있는 데이터는 10개
1페이지를 클릭할때 10개의 데이터만 보이면된다.
db에서 뒤의 데이터를 가져오기전에 사용자한테 빠르게 보여줄수있다.
부분범위처리가 알맞는 사례이다
만약 여기서 전체범위처리라면??
- 사용자는 1페이지를 클릭해서 1페이지만 보려고 해도 10페이지의 해당하는 데이터가 다 받아질때까지 기다려야지 볼수있다.
- 1페이지만 대충보고 나가면 굳이 필요없는데이터를 불러온것이나 다름없다.
보통 index를 타서 부분 범위를 처리하는 경우가 많다
(index는 데이터가 정렬되어 들어가는것)
- > 정렬이 되어있는것을 하나씩보내는것은 부분범위처리니까
(전체범위는 정렬을 해야지만 보낼수있으니까)
*
무조건 범위처리가 좋은것은 아니다
상황마다 다르다
부분범위처리하면 시작 데이터가 전체범위처리보다 먼저 도착하지만
마지막 데이터는 부분범위처리가 같거나 늦는경우가 많다.
**
실행계획 (set autotrace on)만으로는 부분범위처리인지 전체범위 처리인지 판단하기 힘들다
sql문도 같이 봐야한다
'DB > 오라클' 카테고리의 다른 글
[oracle] 코딩테스트 대비 (0) | 2022.12.22 |
---|---|
[oracle] trim, rtrim, ltrim 단일행 함수 (0) | 2022.08.30 |
[oracle] number타입 (0) | 2022.08.23 |
[oracle] index (Function-Based Index) (0) | 2022.08.12 |
[oralce]PL/SQL Wrapper error: Couldn't process command line arguments. (0) | 2022.07.25 |