3.2.4. 비트맵(Bitmap) 실행계획

조회 수 5526 추천 수 0 2012.04.11 13:05:57
실천하자 *.136.168.206
제목 작성자 날짜
3.2.4. 비트맵(Bitmap) 실행계획 (current) 실천하자 2012.04.11 13:05:57
복원
<p><b><span style="font-size: 14px; color: rgb(70, 70, 70); ">3.2.4. 비트맵(Bitmap) 실행계획</span></b></p><p><br /></p><p><b><span style="color: rgb(0, 0, 255); ">3.2.4.1. 조건 연산자별 비트맵 실행계획</span></b></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><b>가) 동치(Equal) 비교 실행계획</b></p></blockquote><p></p><ul><ul><li>가장 단순한 형태로&nbsp;하나의 컬럼 '=' 로 비교한 경우</li><li>'IN' 사용 시 여러개의 '=' 를 사용한 것과 동일</li><li>비트맵 검색 처리를 'SINGLE VALUE'로 나타냄</li></ul></ul><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><img src="files/attach/images/6534/731/007/BIT_1.png" alt="BIT_1.png" width="1064" height="507" editor_component="image_link"/></div></blockquote><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><img src="files/attach/images/6534/731/007/BIT_2.png" alt="BIT_2.png" width="536" height="243" editor_component="image_link"/>
</div></blockquote><p></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><br /></p><p><br /></p><p><b>나) 범위(Range) 비교 실행계획</b></p></blockquote><p></p><ul><ul><li>범위를 나타내는 BETWEEN, LIKE, &gt;, &lt;, &gt;=, &lt;= 연산자 사용 시 'RANGE SCAN'</li><li>Number 타입의 컬럼에 LIKE 사용 시&nbsp;</li><ul><li>B-Tree 인덱스 : 인덱스를 사용하지 않음 &nbsp;∵ 내부적인 변형 발생</li><li>Bitmap 인덱스 : 인덱스 'FULL SCAN' 실행계획 발생</li></ul></ul></ul><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><img src="files/attach/images/6534/731/007/BIT_3.png" alt="BIT_3.png" width="556" height="219" editor_component="image_link"/>
</div></blockquote><div><br /></div><p></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><br /></p><p><b>다) AND 조건 실행계획</b></p></blockquote><p></p><ul><ul><li>각 컬럼을 자신의 단위 액세스를 수행 후 그 결과를&nbsp;AND 연산 실시</li><li>비트맵을 범위 스캔 시, 각 인덱스 처리 후 비트맵 머지 결과를 'AND' 연산 실시</li><li>NOT EQUAL 조건과 함께 AND 조건 사용 시 'BITMAP MINUS' 연산 발생</li></ul></ul><p></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><img src="files/attach/images/6534/731/007/BIT_4.png" alt="BIT_4.png" width="556" height="273" editor_component="image_link"/>
<br /></p><p><br /></p><p><br /></p><p><b>라) OR 조건 실행계획</b></p></blockquote><p></p><ul><ul><li>AND 조건 실행계획과 동일</li><li>부정형 조건('&lt;&gt;') 이 OR 연산에 사용 시 하나의 비트맵 인덱스만 사용</li></ul></ul><p></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><img src="files/attach/images/6534/731/007/BIT_5.png" alt="BIT_5.png" width="557" height="293" editor_component="image_link"/>
<br /></p><p><br /></p><p><br /></p><p><b>마) 부등식(Not Equal) 비교 실행계획</b></p></blockquote><p></p><ul><ul><li>등식 조건의 엑세스 수행 결과를 'BITMAP MINUS' 를 통하여 제거 처리</li><li>해당 컬럼이 NULL을 포함 시 NULL 값을 제거하는 작업 추가</li></ul></ul><p></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><img src="files/attach/images/6534/731/007/BIT_6.png" alt="BIT_6.png" width="557" height="201" editor_component="image_link"/>
<br /></p><p><br /></p><p><br /></p><p><b>바) NULL 비교 실행계획</b></p></blockquote><p></p><ul><ul><li>비트맵 인덱스에서는 'IS NULL' 또는&nbsp;'IS NOT NULL' 연산자 처리 시 NULL도 비트맵 연산에 참여</li></ul></ul><p></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><img src="files/attach/images/6534/731/007/BIT_7.png" alt="BIT_7.png" width="1004" height="243" editor_component="image_link"/>
<br /></p></blockquote><p><br /></p><p><br /></p><p><br /></p><p><b><span style="color: rgb(0, 0, 255); ">3.2.4.2 서브쿼리 실행계획</span></b></p><p></p><ul><li>B-Tree 인덱스일 때와 유사</li><li>여러 개의 서브 쿼리가 동시 사용 될 때, 스타변형 조인(비트맵 인덱스의 특성 사용)으로 수행되도록 처리 시 효율적 실행계획 수행</li></ul><p></p><p><br /></p><p><br /></p><p><b><span style="color: rgb(0, 0, 255); ">3.2.4.3. B-Tree 인덱스와 연합(Combine) 실행계획</span></b></p><p></p><ul><li>B-Tree 인덱스를 비트맵으로 전환하여 비트맵 연산 수행 가능&nbsp;</li><ul><li>"BITMAP -&gt; ROWID" , "ROWID -&gt;&nbsp;BITMAP" 으로 전환 할 수 있는 특성 이용</li></ul></ul><ul><li>비트맵 인덱스가 전혀 없을 시 "INDEX_COMBINE" 힌트 사용으로 비트맵 엑세스 가능</li></ul><p></p>
실천하자 2010.11.09 21:16:18
복원
<p><b><span style="font-size: 14px; color: rgb(70, 70, 70); ">3.2.4. 비트맵(Bitmap) 실행계획</span></b></p><p><br /></p><p><b><span style="color: rgb(0, 0, 255); ">3.2.4.1. 조건 연산자별 비트맵 실행계획</span></b></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><b>가) 동치(Equal) 비교 실행계획</b></p></blockquote><p></p><ul><ul><li>가장 단순한 형태로&nbsp;하나의 컬럼 '=' 로 비교한 경우</li><li>'IN' 사용 시 여러개의 '=' 를 사용한 것과 동일</li><li>비트맵 검색 처리를 'SINGLE VALUE'로 나타냄</li></ul></ul><p></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><br /></p><p><b>나) 범위(Range) 비교 실행계획</b></p></blockquote><p></p><ul><ul><li>범위를 나타내는 BETWEEN, LIKE, &gt;, &lt;, &gt;=, &lt;= 연산자 사용 시 'RANGE SCAN'</li><li>Number 타입의 컬럼에 LIKE 사용 시&nbsp;</li><ul><li>B-Tree 인덱스 : 인덱스를 사용하지 않음 &nbsp;∵ 내부적인 변형 발생</li><li>Bitmap 인덱스 : 인덱스 'FULL SCAN' 실행계획 발생</li></ul></ul></ul><p></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><br /></p><p><b>다) AND 조건 실행계획</b></p></blockquote><p></p><ul><ul><li>각 컬럼을 자신의 단위 액세스를 수행 후 그 결과를&nbsp;AND 연산 실시</li><li>비트맵을 범위 스캔 시, 각 인덱스 처리 후 비트맵 머지 결과를 'AND' 연산 실시</li><li>NOT EQUAL 조건과 함께 AND 조건 사용 시 'BITMAP MINUS' 연산 발생</li></ul></ul><p></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><br /></p><p><b>라) OR 조건 실행계획</b></p></blockquote><p></p><ul><ul><li>AND 조건 실행계획과 동일</li><li>부정형 조건('&lt;&gt;') 이 OR 연산에 사용 시 하나의 비트맵 인덱스만 사용</li></ul></ul><p></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><br /></p><p><b>마) 부등식(Not Equal) 비교 실행계획</b></p></blockquote><p></p><ul><ul><li>등식 조건의 엑세스 수행 결과를 'BITMAP MINUS' 를 통하여 제거 처리</li><li>해당 컬럼이 NULL을 포함 시 NULL 값을 제거하는 작업 추가</li></ul></ul><p></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><br /></p><p><b>바) NULL 비교 실행계획</b></p></blockquote><p></p><ul><ul><li>비트맵 인덱스에서는 'IS NULL' 또는&nbsp;'IS NOT NULL' 연산자 처리 시 NULL도 비트맵 연산에 참여</li></ul></ul><p></p><p><br /></p><p><br /></p><p><b><span style="color: rgb(0, 0, 255); ">3.2.4.2 서브쿼리 실행계획</span></b></p><p></p><ul><li>B-Tree 인덱스일 때와 유사</li><li>여러 개의 서브 쿼리가 동시 사용 될 때, 스타변형 조인(비트맵 인덱스의 특성 사용)으로 수행되도록 처리 시 효율적 실행계획 수행</li></ul><p></p><p><br /></p><p><br /></p><p><b><span style="color: rgb(0, 0, 255); ">3.2.4.3. B-Tree 인덱스와 연합(Combine) 실행계획</span></b></p><p></p><ul><li>B-Tree 인덱스를 비트맵으로 전환하여 비트맵 연산 수행 가능&nbsp;</li><ul><li>"BITMAP -&gt; ROWID" , "ROWID -&gt;&nbsp;BITMAP" 으로 전환 할 수 있는 특성 이용</li></ul></ul><ul><li>비트맵 인덱스가 전혀 없을 시 "INDEX_COMBINE" 힌트 사용으로 비트맵 엑세스 가능</li></ul><p></p>
실천하자 2010.11.08 10:30:07
복원
<p><b><span style="font-size: 14px; color: rgb(70, 70, 70); ">3.2.4. 비트맵(Bitmap) 실행계획</span></b></p><p><br /></p><p><b><span style="color: rgb(0, 0, 255); ">3.2.4.1. 조건 연산자별 비트맵 실행계획</span></b></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><b>가) 동치(Equal) 비교 실행계획</b></p></blockquote><p></p><ul><ul><li>가장 단순한 형태로&nbsp;하나의 컬럼 '=' 로 비교한 경우</li><li>'IN' 사용 시 여러개의 '=' 를 사용한 것과 동일</li><li>비트맵 검색 처리를 'SINGLE VALUE'로 나타냄</li></ul></ul><p></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><br /></p><p><b>나) 범위(Range)비교 실행계획</b></p></blockquote><p></p><ul><ul><li>범위를 나타내는 BETWEEN, LIKE, &gt;,&lt;, &gt;=,&lt;= 연산자 사용 시 'RANGE SCAN'</li><li>Number 타입의 컬럼에 LIKE 사용 시&nbsp;</li><ul><li>B-Tree 인덱스에서는 인덱스를 사용하지 않음 &nbsp;∵ 내부적인 변형 발생</li><li>비트맵 인덱스에서는 인덱스 'FULL SCAN' 실행계획 발생</li></ul></ul></ul><p></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><br /></p><p><b>다) AND 조건 실행계획</b></p></blockquote><p></p><ul><ul><li>각 컬럼을 자신의 단위 액세스를 수행 후 그 결과를&nbsp;AND 연산 실시</li><li>비트맵을 범위 스캔 시, 각 인덱스 처리 후 비트맵 머지 결과를 'AND' 연산 실시</li><li>NOT EQUAL 조건과 함께 AND 조건 사용 시 'BITMAP MINUS' 연산 발생</li></ul></ul><p></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><br /></p><p><b>라) OR 조건 실행계획</b></p></blockquote><p></p><ul><ul><li>AND 조건 실행계획과 동일</li><li>부정형 조건('&lt;&gt;') 이 OR 연산에 사용 시 하나의 비트맵 인덱스만 사용</li></ul></ul><p></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><br /></p><p><b>마) 부등식(Not Equal) 비교 실행계획</b></p></blockquote><p></p><ul><ul><li>등식 조건의 엑세스 수행 결과를 'BITMAP MINUS' 를 통하여 제거 처리</li><li>해당 컬럼이 NULL을 포함 시 NULL 값을 제거하는 작업 추가</li></ul></ul><p></p><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><br /></p><p><b>바) NULL 비교 실행계획</b></p></blockquote><p></p><ul><ul><li>비트맵 인덱스에서는 'IS NULL' 또는&nbsp;'IS NOT NULL' 연산자 처리 시 NULL도 비트맵 연산에 참여</li></ul></ul><p></p><p><br /></p><p><br /></p><p><b><span style="color: rgb(0, 0, 255); ">3.2.4.2 서브쿼리 실행계획</span></b></p><p><ul><li>B-Tree 인덱스일 때와 유사</li><li>여러 개의 서브 쿼리가 동시 사용 될 때, 스타변형 조인(비트맵 인덱스의 특성 사용)으로 수행되도록 처리 시 효율적 실행계획 수행</li></ul></p><p><br /></p><p><br /></p><p><b><span style="color: rgb(0, 0, 255); ">3.2.4.3. B-Tree 인덱스와 연합(Combine) 실행계획</span></b></p><p></p><ul><li>B-Tree 인덱스를 비트맵으로 전환하여 비트맵 연산 수행 가능&nbsp;</li><ul><li>BITMAP -&gt; ROWID , ROWID -&gt;&nbsp;BITMAP으로 전환 할 수 있는 특성 이용</li></ul></ul><ul><li>비트맵 인덱스가 전혀 없을 시 "INDEX_COMBINE" 힌트 사용으로 비트맵 엑세스 가능</li></ul><p></p>
실천하자 2010.11.07 23:35:35