Oracle] 실행계획 보는 법 ***설명 플랜에서 나오는 각 라인을‘로우 소스(Row Source)’라고 한다. 플랜을 보면서 처리 순서를 판단하는 것은 간단하다. 플랜은 트리 형태로 되어 있으며, 자신보다 하위 레벨이 있으면 하위 레벨부터, 같은 레벨이라면 위(상)의 로우소스부터 실행 된다. 위플랜의‘Optimizer=CHOOSE’에서알수있듯이해당SQL 문장은 옵티마이저 모드가 CHOOSE에서 플랜이 만들어진 것이다. 또한 플랜에서 ‘Cost=’의 항목이 나오면CBO로 풀렸다는 것이다. RBO인지 CBO인지의 판단은 옵티마이저 모드의 항목으로 판단하는 것이 아니라 ‘Cost=’로 판단한다는 것에 주의하자. 위 플랜에서 2개의 테이블 DEPT와 EMP 테이블 각각의 액세스 경로를 확인할 수 있다. 모두..
주민등록번호와 같이 값의 길이가 일정한 컬럼 즉 고정길이 컬럼에만 char형을 사용하고 값의 길이가 제각각인 컬럼엔 varchar 형을 사용해야 합니다. char(5) 형인 컬럼에 'aaaa' 란 값을 넣으면 실제로 'aaaa ' 처럼 뒤에 한자리 공백이 들어 갑니다. 이렇듯 의도하지 않은 곳에 공백이 들어갈 수 있어 sql문에서 의도하지 않은 결과를 낳을 수 있습니다. 한가지 예로 where 절에서 고정길이 컬럼인 A 값을 비교할 때 A='aaaa' 라고 해도 'aaaa ' 값을 찾을 수 있지만 A = DECODE(1,1,'aaaa','etc') 라고 하면 찾지를 못합니다. 즉 decode 문을 통해 나온 값은 공백이 있는 A 컬럼과 비교할 수 없는 것입니다. 고정길이 컬럼에만 char 형을 사용 이란..
처음에는 사용하던 컬럼이 시간이 지남에 따라 사용되지 않을 경우에 테이블을 삭제하고 다시 이관하는 작업이 쉽지 않기 때문에 그냥 계속 사용하여 공간만 낭비하는 경우가 있습니다, 이때 UNUSED를 사용해서 컬럼을 안보이게 할 수 있습니다. 형식) alter table table_name set unused (column_name); .unused 된 컬럼은 다시 되살릴 수 없음 .동일한 컬럼명으로 새롭게 추가할 수는 있음.
1. HOLD_CURSOR : PARSE COUNT 횟수를 줄임. 즉 SQL문이 재실행될 때 이미 PARSE된 정보를 재사용하게 함. ex) EXEC ORACLE OPTION (HOLD_CURSOR = NO) : 재사용 안함 EXEC ORACLE OPTION (HOLD_CURSOR = YES) : 재사용, 자주 사용되는 SQL문을 저장 2. RELEASE_CUROSR : CURSOR_Cache 영역과 Library Cashe 영역간의 관계를 해제하거나 유지함. ex) EXEC ORACLE OPTION ( RELEASE_CURSOR = NO) : CUROSR_Cache, 영역에 저장된 SQL문에 대한 PARSE 정보를 저장하는 Library Cashe 영역의 관계를 유지. EXEC ORACLE OPTION..
원본 출처 : http://home.bcline.com/hoya1/ 1.1 Pro*C란? ORACLE RDBMS에 준비된 Pro*C툴은, SQL문을 포함한 C 프로그램을, ORACLE 데이터베이스내에 있는 데이터에 접근과, 조작을 할 수 있는 C 프로그램으로 변환하기 위한 것이다. Pro*C는 프리컴파일러이기 때문에, 입력 파일 내에 있는 EXEC SQL 문을 적당한 ORACLE 콜로 변환해서 출력 파일을 작성한다. 그 다음 이 출력 파일을 C 프로그램에 대한 통상의 방법으로 컴파일하고 링크해서 실행모듈을 작성한다. 1.2 개요 Pro*C 툴을 사용하면 프로그램머는 통상의 프로그래밍 과정에 덧붙여서 별도의 처리를 수행 할 필요가 생긴다. 그러나 별도의 처리를 추가함으로써, 프로그램머에 도움이 되는 상당량..
오라클에서 테이블의 컬럼정보를 가지고 있는 딕셔너리 테이블은 ALL_TAB_COLUMNS 를 이용하면 원하는 정보를 얻을 수 있습니다. SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH FROM ALL_TAB_COLUMNS WHERE OWNER = :V_OWNER AND TABLE_NAME = :V_TABLE_NAME 실무에서 2개의 동일한 테이블이 있을 경우 (데이터 이관작업 테이블) 2개의 테이블이 동일한 구성을 했는 지 검사하는 로직에서 유용하게 사용했습니다. -------------------------------------------------------------------------- SLEECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH FR..
1과 2를 입력받아 1일때는 특정 컬럼이 'D'인것 만 출력하고 2일때는 D가 아닌 것을 출력. 입력값은 :V_VALUE 로 받을 것고 IF문을 사용할 수 있는 PL/SQL를 배제한 순수한 SQL로만 작성할 것. T: T_SAMPLE C: STATUS 1. 입력값이 1일 경우 SELECT * FROM T_SAMPLE WHERE STATUS = 'D' 2. 입력값이 2일 경우 SELECT * FROM T_SAMPLE WHERE STATUS !='D' . . . . . . . . . . . . . . 언뜻 생각하면 간단하지만 막상해볼려고 하면 잘 안되더군요.(제 경우) 아직 내공이 많이 부족하나 봅니다. 1시간의 고민 끝에 해결하니 허무하군요. 너무 간단해서 ㅠㅠ SELECT * FROM T_SAMPLE W..
- Total
- Today
- Yesterday
- yugabyteDB
- 매직 트랙패드2
- 카카오 에드
- 파나소닉 비데 DL-EH10KWS
- 오미크론
- 빈센트 반 고흐
- Pixel Pals
- 브리다 정수기
- Life Chair
- Sybase IQ
- GKRS
- 홈 오피스
- VARIDESK
- 별잉 빛나는 밤
- 배당급
- node.js
- 로니카 BCS
- 톡토기
- 별이 빚나는 밤
- JMW 헤어드라이기기
- 화분벌레
- 남설 팔찌
- 증권정보포털
- 고체 향수
- 루미큐브 종류
- 유가바이트디비
- 코라나 19
- 르세라핌
- weka
- 솔리드 쿨론
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |