테이블 목록 조회 |
-- 유저가 생성한 테이블 목록 출력. SELECT * FROM USER_TABLES;
일단 쿼리튜닝을 시작하기 전에
그 쿼리문이 어떠한 구조의 테이블, 인덱스를 사용하는지는 매우 중요하다.
이미 구조화된 ER 다이어그램, 인덱스 분석표를 가지고있다면 넘어가도 되지만
그렇지않다면 아래의 작업을 수행하면서 ER 다이어그램과 인덱스 분석표를 작성하자.
만약 대규모 시스템에서 어떤 쿼리를 튜닝해야할지조차 모른겠다면
각 쿼리의 <실행계획>을 최대한 많이 수집, 분석 후
어떤 쿼리를 튜닝할지 결정한다.
테이블 구조 조회 |
-- 테이블 스키마 조회 (not null, type 조회가능) desc #TABLE_NAME;
아래는 실제 수행결과이다.
TABLE a Name Null? Type ----------------------------------------- -------- ---------------------------- KEY NOT NULL VARCHAR2(30) VALUE VARCHAR2(30) |
테이블 제약조건 조회 |
-- 특정 테이블의 제약조건 조회. SELECT * FROM ALL_CONSTRAINTS WHERE TABLE_NAME = '#TABLE_NAME';
테이블의 폭이 매우 긴 관계로 실행결과 예시는 올리지 않았다.
실제수행 후, 해석방법은 아래의 오라클 기술문서를 참고하기 바란다.
테이블 인덱스 조회 |
-- 특정 테이블의 모든 인덱스 조회 SELECT C.INDEX_NAME, C.COLUMN_POSITION, C.COLUMN_NAME, T.NULLABLE, C.COLUMN_LENGTH, C.DESCEND FROM ALL_IND_COLUMNS C, ALL_TAB_COLUMNS T WHERE C.TABLE_NAME = '#TABLE_NAME' AND T.TABLE_NAME = C.TABLE_NAME AND T.COLUMN_NAME = C.COLUMN_NAME ORDER BY 1, 2;
아래는 수행결과 예시이다.
PK_A 1 KEY N 30 ASC |
-- 인덱스의 파티션 여부 조회 SELECT I.INDEX_NAME, I.UNIQUENESS, P.LOCALITY, P.ALIGNMENT, P.PARTITION_COUNT FROM ALL_INDEXES I, ALL_PART_INDEXES P WHERE I.TABLE_NAME = '#TABLE_NAME' AND P.TABLE_NAME(+) = I.TABLE_NAME AND P.INDEX_NAME(+) = I.INDEX_NAME ORDER BY 1;
아래는 수행결과 예시이다.
INDEX_NAME UNIQUENESS LOCALITY ALIGNMENT PARTITION_COUNT
|