728x90

Programming/Oracle 129

Analytic Function 2

Analytic functions2 RISQL, SQL 확장,Intelligent SQL, Analytic functions SQL이 여러 분야에서 다양하게 사용되긴 하지만, 분석작업을 위한 강력한 기능을 가지고 있지는 않다. 때문에 MOVING AVERAGES, RANKINGS, AND LEAD/LAG COMPARISONS 같은 기본적인 BUSINESS INTELLIGENCE CALCULATION 을 수행하기 위해서는 표준 SQL외에 과도한 프로그램밍 작업을 요구하게 된다. 뿐만 아니라 이러한 작업은 간혹 시스템 성능에 치명적인 장애가 될 수도 있다. ORACLE8i 8.1.6 에서는 이러한 요구들을 다루기 위해 BUSINESS INTELLIGENCE CALCULATION에 대한 새로운 FUNCTION..

Programming/Oracle 2008.12.02

Analytic Function(오라클 윈도우 펑션)

Analytic Function 제1회 Analytic Function의 소개 및 수행원리 Analytic function의 소개 초기 대부분의 RDBMS는 집합적인 개념에 충실하여 만들어 졌기 때문에 집합적인 개념에 위배되는 처리는 표준 SQL로 처리가 불가능 하였다. 그래서 이러한 작업은 프로그램 로직으로 처리 하거나 데이터의 복제 등 다양한 응용 고난도 SQL( 대용량 데이터베이스 2권 참조)을 활용하여 처리 해야만 했다. 그러나 프로그램에서 로직으로 처리할 경우 집합 개념의 RDB시스템에서 심각한 성능저하를 유발할 수 있다는 점을 ”고성능 DB구축을 위한 핵심요소의 이해”를 읽으신 분들은 이해하실 수 있을 것이다. 즉 고가의 고성능 RDB를 구입해 놓고 DBMS를 단지 Data 저장소로만 사용하는..

Programming/Oracle 2008.12.02

HINT

힌트의 파싱과 힌트구문 오류에 대한 처리 ======================================= 옵티마이져가 쿼리를 분석하여 실행계획을 수립할때 힌트도 파싱을 합니다.. 일반적으로 힌트에서 힌트간의 우선 순위는 거의 없습니다.. 일부 힌트의 경우 특정힌트가 나오면 무시되거나 하는것은 있습니다.. 우리가 쿼리 문장에 힌트를 기술시 힌트에 따라, 또는 테이블 엘리어스를 사용하는것에 따라 또는 테이블명을 직접 기술해야만 하는 힌트도 있습니다.. 힌트의 파싱 옵티마이져가 힌트를 파싱할때 쿼리 블럭의 스키마도 같이 파싱하는 것은 아닙니다.. 단지 구문을 파싱하며 체크할 뿐입니다.. 즉 간단히 예를 들면 SELECT * FROM EMP WHERE EMPNO > 10 ; 이 구문을 가지고 예를 들면 ..

Programming/Oracle 2008.12.02

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