분류 전체보기
-
-
NL 조인데이터베이스 2021. 6. 17. 21:31
1.기본 매커니즘 begin for outer in (select deptno,empno, rpad(ename,10) ename from emp ) loop --outer 루프 for inner in (select dname from dept where deptno=outer.deptno ) loop --inner 루프 dbms_output.put_line(outer.empno||':'||outer.ename||':'||inner.dname); end loop; end loop; end; 2. NL 조인 수행 과정 분석 select /*+ ordered use_nl(e) */ e.empno ,e.ename ,d.dname ,e.job ,e.sal where e.deptno = d.deptno ------..
-
인덱스 튜닝 기초데이터베이스 2021. 6. 13. 20:57
1. 인덱스 ROWID 에 의한 테이블 랜덤 엑세스 2. 테이블 엑세스 최소화 튜닝 인덱스 기본 원리에서 살폈듯이, B*Tree 인덱스를 정상적으로 사용하려면 범위 스캔 시작지점을 찾기 위해 루트 블록부터 리프 블록까지의 수직적 탐색 과정을 거쳐야 한다. 만약 인덱스 선두 컬럼이 조건절에 사용되지 않으면, 범위 스캔을 위한 시작점을 찾을 수 없어 옵티마이저는 인덱스 전체를 스캔하거나 테이블 전체를 스캔하는 방식을 선택한다. 인덱스 선두 컬럼이 조건절에 사용되더라도 범위 스캔이 불가능하거나 인덱스를 아예 사용 못하는 경우들을 살펴본다. 1. 범위 스캔이 불가능하거나 인덱스 사용이 불가능한 경우 아래 세가지 경우는 인덱스 범위 스캔이 불가능하지만 index Full Scan 은 가능하다. 마지막 쿼리문의 경..
-
-
-
-
인덱스 기본 원리데이터베이스 2021. 5. 30. 14:16
수평적탐색과 수직적 탐색 다양한 인덱스 스캔 방식 다양한 인덱스 종류 대용량 테이블에서 필요한 데이터를 빠르게 찾기 위해 인덱스의 도움이 필요하다. 그림 III-3-1 은 인덱스 컬럼이 양의 정수만 저장할 수 있는 데이터 타입이라고 가정했을 때 예시이다. 처음에는 단 하나의 루트 노트에서 데이터가 쌓이면서 루트, 브랜치, 리프 노드를 모두 갖춘 나무 형태로 성장한다. 루트에서 리프블록까지의 거리를 인덱스 깊이(Height)라고 부르며, 인덱스를 반복적으로 탐색할 때 성능에 영향을 미친다. 루트와 브랜치 블록은 각 하위 노드들의 데이터 값 범위를 나타내는 키 값과 그 키값에 해당하는 블록을 찾는데 필요한 주소정보를 가진다. 리프 블록은 인덱스 키 값과 그 키 값에 해당하는 테이블 레코드를 찾아가는데 필요한..
-