728x90

분류 전체보기 294

JOIN

조인은 두 집합간의 곱으로 데이터를 연결하는 가장 대표적인 데이터 연결 방법이다. 종류에는 Nested Loop Join, Sort Merge Join 그리고 Hash Join이 있다. 1 * M = M 과 M * 1 = M 의 결과집합이 동일한 것처럼 Optimizer가 3가지의 조인 중 어떤 것을 선택할지라도 결과집합은 동일하다. 하지만 수행속도 측면에서 본다면 조인하고자 하는 두 집합의 데이터 상황에 따라 어떤 조인을 선택하느냐, 어떤 집합을 먼저 선행하느냐 에 따라 수행속도에 미치는 영향은 크다. 100쌍의 남녀가 사랑의 짝짓기 하는 것에 비추어 3가지 조인방식이 수행되는 원리를 설명해 보자. 남녀 모두는 자기 원하는 상대방의 번호표 하나씩 가지고 있고, 한 사람은 여러 사람으로부터 선택 받을 수..

Programming/Oracle 2008.12.02

절차형을 sql로 전환

절차형 처리를 SQL로 처리함으로서 액세스의 효율화 , 수행속도의 최적화에 대한 SAMPLE에 대해 알아본다 통신회사의 요금계산 고객의 실적을 관리하는 회사의 고객 실적집계 등 여러 곳에서 사용되어지는 집계 정보를 생성하는 곳에서 유용하게 사용할 수 있다. 여러 기간에 걸처진 고객의 상태변화를 가장 적은 단위(1일)로 나누어서 계산한다. 인식의 변화가 필수적이라 하겠다. 어느 통신 회사에서는 지난 달 사용자의 사용 실적에 따라 매월 청구 작업을 하고 있다. 월 사용료는 정액제로 계산되나 사용자의 특별한 사유에 따라 다양한 경우의 감액 요인이 발생한다. 예를 들어 장애자에 대한 감액, 연체에 의해 강제로 사용 정지를 당했을 때의 감액, 분실로 인해 일정 기간 사용이 중지된 경우의 감액 등이 있다. 빈번하게..

Programming/Oracle 2008.12.02

인덱스 컬럼의 변경

인덱스 컬럼의 변형은 결국 인덱스를 사용하지 못하게 되어 수행속도에 많은 악 영향을 끼친다. 여기에서는 인덱스 컬럼의 외부적(External) 변형에 대해서 알아보고 그 대체방안에 대해서 알아본다. (KEY WORD : INDEX 활용, 인덱스, 외부적인변형, Suppressing ) 인덱스 컬럼에 변형이 일어나면 상대값과 비교되기 전에 먼저 가공이 된 후에 비교된다. 하지만 인덱스는 가공되기 전의 값으로 생성되어 있기 때문에 당연히 인덱스를 사용할 수 없게 된다. 여기에서 외부적(External) 변형이란 사용자가 인덱스를 가진 컬럼을 어떤 SQL함수나 사용자 지정함수(User Defined Stored Function), 연산, 결합(||) 등으로 가공을 시킨 후에 발생되는 것이며 이러한 거의 모든 ..

Programming/Oracle 2008.12.02

양쪽 outer-join의 해결방법

[ 양쪽 outer – join의 해결 ] CARTESIAN PRODUCT(카테시안 곱)을 이용한 소계처리를 알아본다. 소계, 집계용 REPORT 화면을 생성하고자 하는 모든 APPLICATION에서 사용할 수 있다. 하나의 SQL에서 SOURCE DATA와 그것을 소계, 또는 합계한 RECORD를 함께 추출한다. 이것은 CARTESIAN PRODUCT를 이용해서 가능하다. (KEY WORD : 소계처리, 카테시안곱, CARTESIAN PRODUCT, 매출원가 대비표 ) 어느 회사의 자금 업무의 다음과 모델이 있다고 가정한다. 위의 모델을 보면 ‘예적금원장’을 기준으로 하여 ‘예입내역’과 ‘인출내역’이 방사형으로 연결되어 있고 ‘부서’가 예적금의 예입처로서 상위집합으로 연결되어 있다. 위의 모델에서 어떤..

Programming/Oracle 2008.12.02

부정형 조인

부정형 조인의 여러 가지 형태와 상황에 따른 효율적인 부정형 조인에 대해서 알아본다. 부분범위 처리를 유지하고 싶은 경우나 서브쿼리가 독자적으로 처리범위를 즐일 수 없을 때는 FILTER형태로 수행하게 하고, 그 외의 경우에는 NOT IN을 사용하여 ANTI-MERGE, ANTI-HASH 방식으로 처리해야 한다. (KEY WORD : 부정형 조인, ANTI-JOIN, NOT IN, ANTI-HASH, ANTI-MERGE) 부정형 조인에는 NOT IN, NOT EXISTS 를 사용하여 조건의 만족 여부를 가려내기 위해서 사용한다. 다음과 같은 부정형으로 데이터를 연결하는 SQL을 살펴보자. SELECT * FROM TAB1 WHERE COL1 LIKE 'ABC%' AND COL2 NOT IN ( SELEC..

Programming/Oracle 2008.12.02

부정형의 비교를 긍정형으로 바꾸기

부정형의 비교를 긍정형 비교로 바꾸어서 인덱스 사용을 유도하는 방법에 대해서 알아본다. 부정형의 비교에는 논리적으로 인덱스를 사용할 수 없다. 하지만 부정형의 비교를 긍정형의 비교로 바꾸어서 인덱스의 사용을 유도할 수 있다. (KEY WORD : INDEX 활용, 인덱스, 부정형 비교, NOT IN, NOT EXISTS, ) 다음의 SQL을 보자 SELECT ‘Not found’ FROM EMP WHERE EMPNO ‘1234’ 대개의 Application에서는 사용자가 처리한 데이터의 타당성을 검증하기 위해 이 값의 존재 유무를 확인하는 경우가 빈번하게 발생한다. 이럴 경우 위의 예처럼 부정형의 문장을 사용하는 경우가 자주 있다. 하지만 아래와 같이 ‘NOT EXISTS’를 이용해서 서브쿼리(SUB-Q..

Programming/Oracle 2008.12.02

아웃터 조인시 In 조건의 해결

▣ 아웃터 조인시 In 조건의 해결 (대용량II 3-34 ~ 3-37) 1. 아웃터 조인의 개념 Outer조인은 어떤 집합을 기준으로 해서 조인되는 다른 집합과의 연결에 실패했더라도 그 결과를 추출하는 조인을 말한다. 1) 예제 SQL SELECT A.NO, B.NO, B.CON FROM Tab1 A, Tab2 B Where A.NO = B.NO(+) 2. 아웃터 조인의 실패 아웃터 조인시 연결 조건에 (+)기호를 붙여줘야 한다. 아래와 같은 SQL을 살펴보자 1) 예제 SQL SELECT A.NO, B.NO, B.CON FROM Tab1 A, Tab2 B Where A.NO = B.NO(+) And B.CON = ‘10’ 이것을 수행하면 Tab1와 Tab2가 아웃터 조인 되고 그 결과 중 CON=10 ..

Programming/Oracle 2008.12.02
728x90