본문 바로가기

DB/오라클

[oracle] 부분범위처리 전체범위처리

부분범위처리 전체범위처리 개념

 

부분범위처리 = 코스요리
요리가 될때마다 하나씩 나옴

 

 

전체범위처리 = 한상차림

한번에 빠바박!

 

 

 

 

 

판단

 

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문도 같이 봐야한다