DB Link를 통해 다른 DB에 있는 데이터 Row 복사하기
·
Tech/DB
DB Link 체크 SELECT * FROM DBA_DB_LINKS; DB Link이름 : DB_CC일 때, Insert 쿼리 INSERT INTO members (SELECT A.* FROM teams@DB_CC A WHERE A.member_id = '003');
[DB] Outer Join
·
Tech/DB
Equi Join은 조인을 생성하려는 두 개의 테이블의 한쪽 컬럼에서 값이 없다면 테이터를 반환하지 못한다. 동일 조건에서 조인 조건을 만족하는 값이 없는 행들을 조회하기 위해 Outer Join을 사용 한다. Outer Join 연산자는 "(+)" 이다. 조인시 값이 없는 조인측에 "(+)"를 위치 시킨다. AND A18.VSL_CD (+) = B2.VSL_CD AND A18.VOY_NO (+) = B2.VOY_NO AND A18.POR_CD (+) = B2.POR_CD A18 컬럼이 없더라도 B2 컬럼은 가져오도록 조건 설정 *ref : hyeok7524.tistory.com/21
[DB] 성능 최적화
·
Tech/DB
바인드 변수로 플랜을 확인해야 한다 옵티마이저는 상수 값이 다르면 서로 다른 쿼리로 인식해 파싱을 새로 한다. 프로그램에 바인드 변수로 되어있다면 상수값 대신 바인드 변수로 플랜을 확인해야 한다. ACCESS FULL테이블 FULL SCAN을 의미하며 아래와 같은 이유로 발생한다 테이블 FULL SCAN을 의미하며 아래와 같은 이유로 발생한다. 해당 쿼리에 대한 적절한 인덱스가 존재하지 않으므로 필요한 인덱스 생성하여 해결한다. 인덱스는 존재하나 부정확한 통계정보로 인해 인덱스를 차지 않는 경우로, 최신 통계 정보를 구성하거나 힌트절을 사용해 해결한다. 테이블 FULL SCAN하는 것이 인덱스 통한 랜덤 엑세스보다 유리한 경우로 데이터 조회 범위가 커 인덱스를 사용하는 것이 효용성이 없는 것이다. 서브쿼..
[DB] Query Plan
·
Tech/DB
쿼리 플랜 (실행 계획) 옵티마이저는 주어진 환경(통계정보, SQL문) 하에 최적의 실행계획을 제공한다. 이를 통해 어떤 경로로 테이블에 접근하고, 어떤 방식으로 조인하며, 어떤 인덱스 자원을 사용하는지 등에 대한 최적화 방식을 알 수 있다. 옵티마이저 측정값을 통한 쿼리 플랜 해석 Cost : 오퍼레이션 수행에 필요한 예측 비용으로 COST 수치가 낮을 수록 좋은 성능 예상되나 반드시 빠르다고 할 수는 없다. Card : 접근하는 레코드 수 Bytes : 각 실행 단계에서 Access된 Byte 수를 의미한다. ( card 개수 * 1 row의 총 길이) Cardinality : 각 실행 단계에서 Access된 row 수를 의미한다. 쿼리 플랜을 해석하는 순서 레벨(깊이)가 다른 경우 안쪽 레벨 부터 ..