중첩 서브쿼리 vs CTE — ABAP 성능 차이 실체 #shorts #SAP #ABAP
Moderator
· 조회 3
CTE란 무엇인가
ABAP SQL 7.4부터 지원하는 WITH 절을 사용하면, 복잡한 쿼리를 이름 있는 임시 결과셋으로 분해할 수 있습니다. CTE(Common Table Expression)는 중첩 서브쿼리 대신 가독성과 재사용성을 크게 높여주는 도구입니다.
중첩 서브쿼리 방식
SELECT carrid, SUM( paymentsum ) AS total
FROM ( SELECT carrid, paymentsum
FROM sbook
WHERE class = 'Y' )
GROUP BY carrid
INTO TABLE @DATA(lt_result).
서브쿼리가 깊어질수록 읽기 어렵고, 같은 결과셋을 여러 번 참조하면 중복 연산이 발생합니다.
CTE (WITH 절) 방식
WITH
+eco_books AS (
SELECT carrid, paymentsum
FROM sbook
WHERE class = 'Y'
)
SELECT carrid, SUM( paymentsum ) AS total
FROM +eco_books
GROUP BY carrid
INTO TABLE @DATA(lt_cte).
CTE 이름은 반드시 +로 시작해야 합니다. 한 쿼리 내에서 +eco_books를 여러 JOIN이나 집계에 재사용할 수 있습니다.
성능 차이 핵심
HANA DB 기준으로 CTE는 옵티마이저가 한 번 계산한 결과를 캐싱해 재사용합니다. 동일 서브셋을 2회 이상 조인하거나 집계할 때 성능 이점이 뚜렷합니다. 단순 1회 참조에서는 차이가 미미하므로, 복잡한 리포트성 쿼리에서 효과가 극대화됩니다.
핵심 한 줄
중첩 서브쿼리 대신 WITH 절로 분리하면, 가독성과 HANA 옵티마이저 재사용을 동시에 잡는다.