반응형
SQL문을 작성하다 보면 Query를 반복해서 사용하는 경우가 발생한다. 한두번의 반복은 괜찮지만, 그 수가 많아질수록 가독성이 떨어지고 재사용할 수 없어 매번 동일한 Query를 작성하거나 수정해야 한다. 이런 문제점을 해소하는데 도움이 되는게 WITH절이다.
● WITH절 사용 이유 ?
복잡한 SQL에서 반복적으로 사용되는 서브쿼리의 블록을 하나의 WITH절 블록으로 만들어 재사용 할 수 있게 함으로써 쿼리 성능을 높일 수 있다. 자주 실행되는 경우 한번만 Parsing되고 Plan 계획이 수립되므로 쿼리의 성능향상에 도움이 된다.
● WITH절 활용 예제
- 단일 WITH절
1
2
3
4
5
6
7
8
|
WITH TEST AS
(
SELECT 'WITH절' AS STR
FROM DUAL
)
SELECT *
FROM TEST;
|
cs |
- 다중 WITH절
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
WITH TEST1 AS ( /* WITH문1 */
SELECT 'WITH1' AS STR1
FROM DUAL
),
TEST2 AS ( /* WITH문2 */
SELECT STR1
FROM TEST1 /* WITH문1 참조 */
UNION ALL
SELECT 'WITH2' AS STR2
FROM DUAL
)
SELECT *
FROM TEST2;
|
cs |
● 마치며
- SQL문에서 동일한 데이터를 반복처리시, 성능 개선하는 방법으로 WITH절이 많이 활용된다.
- 데이터 건수는 적지만 데이터 추출시 I/O처리량이 많은 경우 효과적이다.
- 여러 부분에 사용될 데이터를 1회 추출하여 임시 테이블에 저장하고, 요청시 저장된 데이터만 읽어 처리하면 되므로 SQL성능개선 및 I/O처리량이 대폭 줄어들 수 있다.
반응형
'개발 LOG > DB' 카테고리의 다른 글
[TIBERO] 티베로 컬럼 추가/수정/삭제 (1) | 2023.11.20 |
---|---|
[티베로] 프로시저 내용 검색하기 (0) | 2023.05.16 |
[TIBERO] 시퀀스(SEQUENCE) 함수 생성, 사용, 초기화, 수정, 삭제 (0) | 2023.04.24 |
[TIBERO] CREATE TABLE 테이블 생성, 기본키(PK) 생성, 제약조건(NOT NULL) 설정, 테이블 컬럼 코멘트(COMMENT) 추가 (0) | 2023.04.24 |
[TIBERO] 티베로DB 컬럼 순서 변경방법 (0) | 2022.12.26 |
댓글