메뉴 건너뛰기

bysql.net

 

1.1  부분범위 처리의 개념

 

ㅁ 부분범위 처리란 조건을 만족하는 전체범위를 처리하는 것이 아니라 일단 운반단위(Array Size) 까지만 처리 하여

     추출하는 처리방식.

ㅁ 처리 범위가 넓더라도 빠른 속도를 얻도록 하기 위함.

ㅁ 일부분만 처리하고서도 Optimizer의 특성을 이용하여 정확한 결과 도출.

 

 

ㅁ 부분범위 처리의 개념

    -조건에 맞는 Data가 많을 수록 Array Size는 빨리 찰 확률이 높다.

    -Array Size에 빨리 차기만 하면 DB는 바로 보내준다.

 

ㅁ 전체범위 처리 : 조건이 Table의 전체를 읽어야만 결과가 나옴

ㅁ 부분범위 처리 : 조건이 일부분만 Access하고도 운반단위로 넘길수 있음.

*실행계획에서 Sort가 나오면 전체범위 처리를 함. 

 그림1.jpg

 1.2 부분범위 처리의 적용원칙

 

논리적으로 보았을 때 반드시 전체범위를 읽어서 가공을 해야만 하는 경우를 제외한 모든 형태에서 가능합니다.

1)Select ?List Sum.Count 등의 Group Function 이 있으면 불가능
2)Order by가 사용되었다면 불가능

?Driving 역할을 하는 IndexOrder by 에 사용된 Column이 동일하다면 가능.

  (IndexAccess 순서와 Order by 순서가 동일 함으로 OptimizerOrder by를 무시하고 Index로 처리하여 결과를 부분범위 Return)

?Union UnionAll

  Union : 중복을 제거 하므로 전체범위 처리

  UnionAll : 중복을 확인 하지 않으므로 부분범위 처리

 

1.2.2.  Optimizer Mode에 따른 부분범위처리

 

Select ord_dept,ordqty

From order

Where ord_dept > ‘1000’;

 

논리적으로 부분범위 처리가 가능하나 Optimizer GoalAll_Rows라면?

 ->손익분기점을 초과한다면 Index를 사용하지 않고 전체 Table Scan 한다.
 

?전체범위를 처리한다면 Index, First_Rows와 같은 Hint를 사용하라.
?온라인 위주의 처리라면 Optimizer 목료를 First_Rows로 지정하라
 

1.3.  부분범위처리의 수행속도 향상원리

 

 

Select * from order;

->부분범위 처리 되므로 빠름

 

Select * from order

Order by item;

->정렬작업을 위해 전체 범위를 모두 처리함으로 느림.

 

ItemIndex가 있다면?

Select * from order

Where item >’’;

->Optimizer 목표가 All_Rows 아니라면 Item index를 사용하여 부분범위 처리.
 

Select /*+ index(order item_index) */ *

From order

Where item > ’’;

 

1.3.  부분범위처리의 수행속도 향상원리

 

 

Select  *

From order

Where ordno between 1 and 1000

And custno like ‘DN%’;

 

조건: Order Table에는 Ordno 조건을 만족하는 Row1000Custno를 만족하는 Row10건이고 각각 별도의 Index가 생성되어 있다. 

1)Ordno Index를 사용한 경우

  -운반단위를 채우기 위해서는 최악의 경우 1000건을 다 뒤져봐야 알 수 있다. page 421 그림

2) Custno Index를 사용한 경우

  로우가 10건이므로 10회만 처리하면 됨.

  만족하는 조건도 1000건으로 많음.

  page 422 그림

 

 

1.3.  부분범위처리의 수행속도 향상원리

 

Ordno 실행계획

그림2.jpg  

 

 

Custno 실행계획

그림3.jpg 

 

??

번호 제목 글쓴이 날짜 조회 수
35 진행기록 운영자 2011.08.23 3552
34 2.3.조인 종류별 특징 및 활용방안 (3/4) (2.3.4~2.3.5) 실천하자 2010.12.08 15346
33 1.4. 부분범위처리로의 유도(1/2) (1.4.9) 실천하자 2010.12.08 14430
32 2.3.4. 해쉬(Hash) 조인 / 2.3.5. 세미(Semi) 조인 pranludi 2010.12.05 8607
31 2.1.조인과 반복연결(loop query)의 비교 pranludi 2010.12.05 11447
30 제2장. 조인의 최적화 방안 pranludi 2010.12.05 6575
29 1.4.9. 웹 게시판에서의 부분범위 처리 pranludi 2010.12.05 6775
28 2.3.조인 종류별 특징 및 활용방안 (1/4) (2.3.1) file 노랑배 2010.12.04 9477
27 2.3.조인 종류별 특징 및 활용방안 (2/4) (2.3.2~2.3.3) file 실천하자 2010.12.03 12561
26 2.2.연결고리 상태가 조인에 미치는 영향 file 노랑배 2010.12.03 9151
» 제1장. 부분범위처리(Partial range scan) file supersally 2010.12.01 12321
24 1.4. 부분범위처리로의 유도(1/2) (1.4.1 ~ 1.4.8) file 실천하자 2010.11.26 19346
23 4.2. 클러스터링 형태의 결정 기준 file pranludi 2010.11.26 8446
22 4.1. 인덱스의 선정 기준 (2/2) (4.1.6.) [1] file 실천하자 2010.11.15 16804
21 제4장. 인덱스 수립 전략 노랑배 2010.11.13 7768
20 4.1. 인덱스의 선정 기준 (1/2) (4.1.1.~4.1.5.) [2] file 노랑배 2010.11.13 23370
19 3.2.5. 기타 특수한 목적을 처리하는 실행계획 pranludi 2010.11.09 11332
18 3.3. 실행계획의 제어 file supersally 2010.11.08 11134
17 3.2.4. 비트맵(Bitmap) 실행계획 file 실천하자 2010.11.08 12833
16 3.2 실행계획의 유형 pranludi 2010.10.19 4929