목록전체 글 (915)
정미나닷컴
조건절 이행- 『(A = B) 이고 (B = C) 이면 (A = C) 이다』는 추론을 통해 새로운 조건절을 내부적으로 생성해 주는 쿼리변환- 『(A > B) 이고 (B > C) 이면 (A > C) 이다』와 같은 추론도 가능- A 테이블에 사용된 필터 조건이 JOIN 조건절을 타고 반대편 B 테이블에 대한 필터 조건으로 이행- 한 테이블 내에서도 두 컬럼간 관계정보를 이용해 조건절 이행SELECT * FROM MINA.DEPT D, MINA.EMP E WHERE E.JOB = 'MANAGER' AND E.DEPT_NO = '10' AND D.DEPT_NO = E.DEPT_NO;-------------------------------------------------------------------------..
아주 어릴 때부터 날 묘하게 기분 좋게 만들어주던 것들이 있다.이를테면 누군가를 향해 속삭이고 있는 여자의 목소리라든가누군가가 내 머리를 빗겨줄 때의 감촉이라든가(이상하게 내가 빗을 때는 느낄 수가 없다.)어떤 사람이 무언가를 만드는 모습같은 것들..(한창 팔찌 만들기에 빠졌을 때 만드는 법을 배우기 위해 영상을 많이 봤는데 나도 모르게 기분이 이상해졌..;;) 이런 것들은 나에게 말로 표현할 수 없는 자극을 불러일으키는데뇌에 아주 미세한 전기가 오는 것 같이 찌릿하기도 하고뒷 목덜미에 살짝 소름이 돋는것 같기도 하면서어느샌가 나를 몽롱하고 나른하게 만들어버리는..예전에는 내가 약간 변태기(?)가 있어서 그런가 의심하기도 했지만근래 들어 나만 이런걸 느끼는게 아니라는 사실을 알게 되었다. ASMR (Au..
조건절 Pushing - 뷰를 참조하는 쿼리 블록의 조건절을 뷰 쿼리 블록 안으로 Pushing하는 기능(옵티마이저가 어떤 이유에서 뷰 Merging에 실패했을 때 2차적으로 시도) 조건절 (Predicate) Pushdown- 쿼리 블록 밖에 있는 조건들을 쿼리 블록 안쪽으로 밀어 넣음SELECT DEPTNO, AVG_SAL FROM (SELECT DEPTNO, AVG(SAL) AVG_SAL FROM EMP GROUP BY DEPTNO) A WHERE DETPNO = 30;Execution Plan-------------------------------------------------------------------------------- 0 SELECT STATEMENT Optimizer=ALL_RO..
☑ 쿼리 변환이란?뷰 MergingSELECT * FROM (SELECT * FROM EMP WHERE JOB = 'SALESMAN') A,(SELECT * FROM DEPT WHERE LOC = 'CHICAGO') BWHERE A.DEPTNO = B.DEPTNO;▼SELECT * FROM EMP A, DEPT BWHERE A.DEPTNO = B.DEPTNO AND A.JOB = 'SALESMAN' AND B.LOC = 'CHICAGO';- 뷰 Merging을 통해 옵티마이저는 더 다양한 access 경로를 조사 대상으로 삼게 됨 단순 뷰(Simple View) Merging- 단순 뷰 : 조건절과 JOIN문만을 포함, no_merge 힌트를 사용하지 않는 한 언제든 Merging 발생-- 조건절 하나만..
쿼리 변환 (Query Transformation)- 쿼리 옵티마이저가 SQL을 분석해 의미적으로 동일(같은 결과를 리턴)하면서도 더 나은 성능이 기대되는 형태로 재작성① 휴리스틱 쿼리 변환결과만 보장된다면 무조건 쿼리 변환 수행 (일종의 Rule-based 최적화 기법)② 비용기반 쿼리 변환변환된 쿼리의 비용이 더 낮을 때만 쿼리 변환 수행 서브쿼리의 분류- 인라인 뷰 (Inline View) : from 절에 나타나는 서브쿼리- 중첩된 서브쿼리 (Nested Subquery) : 결과집합을 한정하기 위해 where 절에 사용된 서브쿼리 * 서브쿼리가 메인쿼리에 있는 컬럼을 참조하는 형태를 '상관관계 있는 서브쿼리'라고 함- 스칼라 서브쿼리 (Scalar Subquery) : 한 레코드당 정확히 하나의..
SQL 처리 절차 - CBO (Cost-Based Optimizer) - SQL Parsing① Syntax check (문법적 오류)② Semantic check (의미상 오류)③ 권한 검사④ SQL과 실행계획이 Library Cache에 존재하는지 check⑤ 존재하면 Execution 단계로 점프 (Soft Parsing), 존재하지 않으면 Optimization (Hard Parsing) ˚Soft Parsing : SQL과 실행계획을 Library Cache에서 찾아 바로 실행˚Hard Parsing : SQL과 실행계획이 캐싱되어 있지 않아 최적화 한 후 실행 ▼ Library Cache 저장 구조* Hash Bucket = Hash Function(SQL Text) Library Cache ..
상호배타적 관계의 JOIN- 상호배타적 관계 : 어떤 엔티티가 두 개 이상의 다른 엔티티의 합집합과 관계를 갖는 것- 상품권결제 테이블 모델링 방법 ① 온라인권번호, 실권번호 두 컬럼을 따로 두고, 레코드별로 둘 중 하나의 컬럼에만 값을 입력 → 외래키 분리SELECT /*+ ordered use_nl(b) use_no(c) use_nl(d) */ A.주문번호, A.결제일자, A.결제금액,NVL(B.온라인권번호, C.실권번호) 상품권번호,NVL(B.발행일시, D.발행일시) 발행일시 FROM 상품권결제 ALEFT OUTER JOIN 온라인권 BON B.온라인권번호 = A.온라인권번호LEFT OUTER JOIN 실권 CON C.실권번호 = A.실권번호LEFT OUTER JOIN 실권발행 DON D.발행번호 ..