Kosta 클라우드 네이티브 어플리케이션 개발(CNA) 교육
Kosta 클라우드 네이티브 애플리케이션 개발 (CNA) 교육 5일차
youngbee
2024. 11. 21. 22:00
SQL 튜닝
- SELECT * 대신 필요한 필드만 지정하여 조회합니다. 불필요한 데이터 검색을 줄여 성능을 향상시킵니다.
- DISTINCT 사용을 피합니다. GROUP BY를 사용하는 것이 더 효율적일 수 있습니다.
- 서브쿼리 대신 JOIN을 사용합니다. 서브쿼리는 행마다 실행되어 성능이 저하될 수 있습니다.
- WHERE 절에서 와일드카드 사용을 최소화합니다. 인덱스 사용을 방해할 수 있기 때문입니다.
Index
- rowid,pk를 가지고 있음
- rowid, pk 를 가지고 메모리 버퍼에 올린 다음 search 후 테이블에서 검색 추출 → BTree 사용
- Index는 수정이 빈번한 것에는 사용 X
- 분포도가 좋은 데이터에만 사용
- Index를 순서대로 사용해야 한다
- 결과가 구간적(between A and B)는 인덱스 사용 X
- CREATE INDEX 인덱스명 ON 테이블명(컬럼명1, 컬럼명2...);
작업결과 확인
- ID : 작업 고유 식별자
- PARENT_ID : 상위 작업ID
- DEPTH : 트리 깊이
- POSITION : 동일 부모 작업에서의 작업 순서
<실행순서>
- depth desc : 트리 아래에서 위로
- PARENT_ID asc : 동일한 부모작업들 부터
- POSITION asc : 좌에서 우로
ACCESS_PREDICATES → 메모리 핸들링
FILTER_PREDICATES → 테이블 핸들링
경과 시간 측정
SET TIMING ON
(쿼리)
SET TIMING OFF
STATEMENT
- 사용되는 자원 측정 가능
- explain plan set STATEMENT_ID='ID이름' for select e.empno, e.ename, e.job, e.sal, d.dname from (select empno, ename, job, sal, deptno from emp where deptno=10) e , dept d where e.deptno = d.deptno; ----------------------------- select * from plan_table; select * from PLAN_TABLE; select STATEMENT_ID, OPERATION, OBJECT_TYPE, OBJECT_NAME , '----' , ID,PARENT_ID,DEPTH,POSITION, '----' , COST,CARDINALITY, BYTES ,CPU_COST, IO_COST , '----' , ACCESS_PREDICATES, FILTER_PREDICATES from PLAN_TABLE where STATEMENT_ID in ('test3', 'test6') order by STATEMENT_ID asc, depth desc, PARENT_ID asc, POSITION asc;
View
- View 에 수정, 삭제를 하면 원본 테이블에도 적용이 된다
View의 장점
- 데이터 접근 제어: 특정 컬럼만 노출하여 보안 강화
- 복잡한 쿼리 단순화: 자주 사용되는 복잡한 쿼리를 간단히 호출 가능
- 데이터 일관성: 여러 애플리케이션에서 동일한 데이터 뷰 사용 가능
View 수정 및 삭제
- 수정: CREATE OR REPLACE VIEW 구문 사용
- 삭제: DROP VIEW view_name; 구문 사용
View 생성
create view MY_TABLE2 as
select empno, ename from emp;
View 수정
create or replace view MY_TABLE2 as
select empno, ename , job from emp;
Inline View
- Inline view는 FROM 절 내에 작성된 서브쿼리로, 마치 테이블처럼 취급됩니다.
- 용도
- 복잡한 쿼리를 단순화
- 여러 개의 쿼리를 하나로 결합
- 조인 연산을 제거하여 쿼리 최적화
- 사용자의 조건절을 where에서 사용하고 싶을 때
SELECT column_list FROM (SELECT ... FROM table_name) [alias] WHERE 조건식;
Sequence
- 중복없는 순서 PK
CREATE SEQUENCE sequence_name
[START WITH n]
[INCREMENT BY n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE];
피벗 : 가로행과 세로 행을 바꾼다
- DECODE (A, B, X, Y)
- A = B면 X를 출력 A ≠ B면 Y를 출력