본문 바로가기

튜닝5

SQL 튜닝 oracle order by SORT 튜닝 [인덱스 현황] EC_COURSE_PK = course_code + year + course_sq_no EC_COURSE_IDX_01 = TEAR 튜닝전 SELECT course_code, year, course_sq_no FROM ec_course_sq WHERE course_code = 36 AND year in ('2000','1999') ORDER by course_code desc, year desc, course_sq_no desc; Elapsed: 00:00:00.09 Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=RULE 1 0 SORT (ORDER BY.. 2021. 1. 5.
SQL튜닝 oracle 툴을 이용하지 않고 실행계획을 보기 1. EXPLAN PLAN STATEMENT 옵티마이저가 주는 실행계획은 차선으로 생각. 실행계획은 만들겠다 EXPLAIN PLAN SET STATEMENT_ID ='TEST1' INTO PLAN_TABLE FOR SELECT A.ENAME, A.DEPTNO, B.DNAME FROM EMP A, DEPT B WHERE A.DEPTNO = B.DEPTNO; 해당 실행 계획이 만들어지고 플랜에 테이블에 플랜이 만들어진다. 그리고 결과를 보려면 SELECT LPAD(' ',2 * (LEVEL-1))||OPERATION as OPERATION, OPTIONS, OBJECT_NAME, POSITION as POS, OBJECT_INSTANCE as INST, ID, PARENT_ID as P_ID FROM PLA.. 2021. 1. 4.
SQL튜닝 Oracle autotrace를 이용하여 실행계획 보기 SQL> SET AUTOTRACE TRACEONLY EXPLAIN SQL> SQL> create index job_deptno_index on emp(job, deptno); Index created. //인덱스를 만들어서 셀렉트시에 밑에 실행계획 SQL> select * from emp 2 where job = 'CLERK' AND deptno = 30; Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 TABLE ACCESS (BY INDEX ROWID) OF 'EMP' 2 1 INDEX (RANGE SCAN) OF 'JOB_DEPTNO_INDEX'.. 2021. 1. 3.
SQL튜닝 Oralce INDEX SCAN-> FULL TABLE SCAN 튜닝 "index만 탄다고 무조건 좋은건 아니다." 를 보여주는 예제 set timing on //실행시간을 본다 alter session set optimizer_mode = rule; //룰베이스로 동작 시킨다 set autotrace on // 실행계획 보기 SELECT course_code, nvl(SUM(decode(year,'1999',deposit_amount)),0) Y1999, nvl(SUM(decode(year,'2000',deposit_amount)),0) Y2000, nvl(SUM(decode(year,'2001',deposit_amount)),0) Y2001, nvl(SUM(decode(year,'2002',deposit_amount)),0) Y2002 FROM EC_APPLY WHER.. 2021. 1. 1.
인덱스 리빌드(index rebuild) 성능개선의 원리!! 인덱스 리빌드의 이유 인덱스 파일은 생성후에 DML 을 만복하다보면 성능이 저하됨. 생성된 인덱스는 트리구조를 가지는데 DML 반복하다보면 트리의 한쪽이 무거워져 전체적인 트리의 깊이가 깊어짐. 첫번째 블럭 : 1 2 3 4 5 두번째 블럭 : 3 4 5 첫번째 블럭에서 3 4 5 를 delete문을 수행하면 논리적으로만 삭제임 다시 쓰면 인덱스에서 3 4 5 자리는 물고 있어서 다음 블럭에 3 4 5를 쓴다. 그래서 더 안 좋다. "인덱스리빌더"를 통해서 물고 있는 부분 회수가 가능하다 인덱스 리빌더 하면 성능이 호전되는 이유는 그것이라고 해요. 인덱스 리빌드의 구분 alter index "owner.index_name" rebuild; 작업이 완료된후 쿼리수행해서 index 가 조회되는.. 2021. 1. 1.