목록전체 글 (906)
정미나닷컴
아주 어릴 때부터 날 묘하게 기분 좋게 만들어주던 것들이 있다.이를테면 누군가를 향해 속삭이고 있는 여자의 목소리라든가누군가가 내 머리를 빗겨줄 때의 감촉이라든가(이상하게 내가 빗을 때는 느낄 수가 없다.)어떤 사람이 무언가를 만드는 모습같은 것들..(한창 팔찌 만들기에 빠졌을 때 만드는 법을 배우기 위해 영상을 많이 봤는데 나도 모르게 기분이 이상해졌..;;) 이런 것들은 나에게 말로 표현할 수 없는 자극을 불러일으키는데뇌에 아주 미세한 전기가 오는 것 같이 찌릿하기도 하고뒷 목덜미에 살짝 소름이 돋는것 같기도 하면서어느샌가 나를 몽롱하고 나른하게 만들어버리는..예전에는 내가 약간 변태기(?)가 있어서 그런가 의심하기도 했지만근래 들어 나만 이런걸 느끼는게 아니라는 사실을 알게 되었다. 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.발행번호 ..
그 날, 약간은 서늘한 공기를 머금었던 안개 자욱했던 새벽녘의 교정을 기억한다. 홀로 아무 이유없이 그 곳을 거닐었던 조금은 쓸쓸했던 어린 날의 나를 기억한다. 그 곳에서만 나던 특유의 풀 냄새를 기억한다. 그 무렵에만 느낄 수 있었던 몽환적인 느낌을 기억한다. 안개는 흘러 흘러 어딘가로 떠나갔고 시간은 흘러 흘러 나를 시공간의 어디쯤으로 데려왔다. 손을 뻗으면 당장이라도 만져질 것 같은 희뿌옇던 풍경을 기억한다. 무성 영화처럼 절대적으로 고요했던 그 날의 장면을 기억한다.
징검다리 테이블 JOIN을 이용한 튜닝-- 고객의 할인혜택 조회SELECT /*+ ordered use_nl(S R) */ C.고객번호, S.서비스번호, S.서비스구분코드, S.서비스상태코드, S.서비스상태변경코드, R.할인시작일자, R.할인종료일자 FROM 고객 C, 서비스 S, 서비스요금할인 R WHERE C.주민법인등록번호 = :ctz_biz_num AND S.명의고객번호 = C.고객번호 AND R.서비스번호 = S.서비스번호 AND R.서비스상품그룹 = '3001' AND R.할인기간코드 = '15' ORDER BY R.할인종료일자 DESC, S.서비스번호; -- 인덱스 구성 고객_N1 : 주민법인등록번호서비스_N2 : 명의고객번호 + 서비스번호서비스요금할인_PK : 서비스번호 + 서비스상품그룹서..