[Oracle] 오라클 WITH절을 사용하여 임시테이블 만들기

2022. 3. 12. 20:46·Programming/Oracle
목차
  1. 1. WITH절이란?
  2. 2. WITH절의 사용방법
  3. 3. 여러개의 WITH 절을 사용할 때
  4.  
  5. 4. WITH절을 사용할 때의 장점
반응형

최근 오라클9i R2부터는 WITH절을 사용하여 가상테이블을 사용할 수 있도록 했다. 일전에는 임시테이블을 별도로 생성해서 만들거나,  SELECT 문의 FROM 절에 반복되는 서브쿼리들을 생성하여 테이블을 불러오곤 했는데, 이제는 덕분에 가독성이 높아지게 된 것이다. 오늘은 가상테이블, 임시테이블을 생성하는 WITH절에 대해서 적어보려 한다. 

 

1. WITH절이란?

오라클 내 WTIH절은 SQL 문장에서 오라클 공유메모리에 임시로 테이블을 생성하여 반복재사용이 가능하도록 하는 구문이다. 동일 테이블 접근을 최소화하고 메모리에 생성된 임시테이블에서 필요한 데이터를 메모리로 접근하기 때문에 성능이 향상될 수 있다. 

 

2. WITH절의 사용방법

WITH절의 사용방법은 간단하다. WITH (TABLE 명) AS (SELECT ~~~FROM )을 사용하면 되는데 아래와 같이 사용하면 된다.

WITH TEMP1 AS
(
	SELECT COL1 AS NEW_COL
    FROM TABLE
)

SELECT NEW_COL 
FROM TEMP1

위와 같이 임시테이블명을 정해서 임시테이블에 들어갈 구문을 작성한 후, 추후에 생성된 임시테이블을 반복하여 사용하는 방식이다. 

이렇게 여러번 반복될 법한 서브쿼리를 WITH절로 만들어서 사용하면 쿼리의 성능을 높일 수도 있고 가독성도 좋아진다. 

출처 : 젠트의 프로그래밍 세상

주의할 점은 오라클 11g R1까지는 WITH절에 선언된 임시테이블을 SELECT문에 사용하지 않으면 오류가 발생했으나, 11g R2부터는 선언 후 사용하지 않아도 오류가 발생하진 않는다. 

 

3. 여러개의 WITH 절을 사용할 때

여러개의 WITH절을 사용할 때는 단순히 쉼표(,)를 찍고 이어서 선언하면 된다.

WITH TEMP1 AS
(
	SELECT COL1 AS NEW_COL1
    FROM TABLE1
),
WITH TEMP2 AS
(
	SELECT COL2 AS NEW_COL2
    FROM TABLE2
)

SELECT 
	NEW_COL1,
    NEW_COL2
FROM TEMP1 A,TEMP2 B
WHERE NEW_COL1 = NEW_COL2

 

4. WITH절을 사용할 때의 장점

WITH절에 정의된 내용을 한번만 사용한다면, 서브쿼리를 사용하는 것과 크게 성능 차이가 나지 않지만, WITH문의 가장 큰 장점은 한번 선언한 WITH절의 내용을 반복해서 사용할 수 있다는 것이다. WITH절을 여러번 사용할 수록 효과가 증가하고 가독성이 좋아지게 된다. 

 

이전 프로젝트를 진행할 때는 오라클 버전이 낮아 WITH절을 사용하지 못해 반복된 서브쿼리를 사용했지만, 이번에는 더욱 편리하고 가독성있게 SQL구문을 작성할 수 있게 되었다. 여러개의 서브쿼리를 연결하여 테이블을 생성해야 하는 사람들은 꼭 참고해보기를 바란다.

 

참고

https://gent.tistory.com/419

 

[Oracle] 오라클 WITH 절 사용법 및 동작방식 (임시 테이블)

오라클 9i R2부터 WITH 절을 사용할 수 있도록 기능이 추가되었다. WITH 절은 임시 테이블 또는 가상 테이블이라고 생각하면 된다. 반복되는 서브쿼리 블록을 하나의 WITH 절 블록으로 만들어서 사용

gent.tistory.com

 

반응형

'Programming > Oracle' 카테고리의 다른 글

[Oracle] Oracle Exadata의 압축방식 (Exadata Hybrid columnar Compression, EHCC)  (0) 2022.05.21
[Oracle] Oracle Exadata란 무엇인가  (0) 2022.05.14
[Oracle] 오라클 append와 append_values 힌트, 사용방법  (0) 2022.04.23
[Oracle] 오라클 힌트(hint)의 개념, 사용법 알아보기  (0) 2022.03.27
[Oracle] SQL 병렬 힌트를 부여하여 쿼리 수행시간 단축하기  (0) 2022.02.26
  1. 1. WITH절이란?
  2. 2. WITH절의 사용방법
  3. 3. 여러개의 WITH 절을 사용할 때
  4.  
  5. 4. WITH절을 사용할 때의 장점
'Programming/Oracle' 카테고리의 다른 글
  • [Oracle] Oracle Exadata란 무엇인가
  • [Oracle] 오라클 append와 append_values 힌트, 사용방법
  • [Oracle] 오라클 힌트(hint)의 개념, 사용법 알아보기
  • [Oracle] SQL 병렬 힌트를 부여하여 쿼리 수행시간 단축하기
자동화먹
자동화먹
많은 사람들에게 도움이 되는 생산적인 기록하기
    반응형
  • 자동화먹
    자동화먹의 생산적인 기록
    자동화먹
  • 전체
    오늘
    어제
    • 분류 전체보기 (144)
      • 생산성 & 자동화 툴 (30)
        • Notion (24)
        • Obsidian (0)
        • Make.com (1)
        • tips (5)
      • Programming (37)
        • Python (18)
        • Oracle (6)
        • Git (13)
      • AI Study (65)
        • DL_Basic (14)
        • ML_Basic (14)
        • NLP (21)
        • Marketing&Recommend (4)
        • chatGPT (0)
        • etc (12)
      • 주인장의 생각서랍 (10)
        • 생각정리 (4)
        • 독서기록 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    노션
    gcp
    notion
    딥러닝
    git commit
    노션첫걸음
    Jupyter notebook
    nlp
    git
    cnn
    데이터베이스
    Github
    Google Cloud Platform
    머신러닝
    dl
    기초
    ML
    python기초
    데이터분석
    pytorch
    Python
    LSTM
    빅데이터분석
    빅데이터
    자연어처리
    GPT
    파이토치
    파이토치로 시작하는 딥러닝 기초
    Transformer
    seq2seq
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
자동화먹
[Oracle] 오라클 WITH절을 사용하여 임시테이블 만들기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.