SQLP
시험 직전 요약장
판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.
스칼라 서브쿼리 반복 제거: 사전 집계·LATERAL·구조화 반환
원래 이론 →판단 기준
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 혼동하기 쉬운 판단 | 정확한 기준 |
|---|---|
| Aggregate를 세 개 쓰면 Table을 세 번 읽는다 | 같은 Query Block의 Aggregate들은 한 입력 처리에서 함께 계산할 수 있다 |
| 사전 집계는 항상 빠르다 | Outer가 작고 선택적 Index Lookup이 가능하면 반복 방식이 더 적을 수 있다 |
OUTER APPLY는 결과를 항상 한 행으로 만든다 | 오른쪽 Subquery가 여러 행이면 왼쪽 행도 여러 행으로 확장된다 |
Top-1에서 ORDER BY sal DESC만 있으면 충분하다 | 동점 처리 규칙을 위한 고유 Tie-Breaker가 필요하다 |
| Object Type은 다중 Column 조회의 기본 해법이다 | Schema Type이 실제로 필요한 경우에 제한적으로 사용한다 |
| 문자열 결합은 Column 수만 줄이는 안전한 최적화다 | 타입·NULL·NLS·길이 오류와 변환 비용이 생긴다 |
| CTE를 작성하면 반드시 먼저 계산된다 | Optimizer가 Merge·재배치할 수 있으므로 실제 Plan을 확인한다 |
| CROSS APPLY는 항상 Match 없는 왼쪽 Row를 제거한다 | GROUP BY 없는 Aggregate는 빈 입력에서도 한 Row를 만들 수 있다 |
| OUTER APPLY는 오른쪽을 항상 한 Row로 제한한다 | 오른쪽이 N행이면 왼쪽도 N행으로 확장된다 |
| LATERAL은 사전 집계보다 항상 빠르다 | Outer 수·NDV·Index 범위·전체 Fetch를 비교한다 |
| Object Constructor는 Argument 순서가 중요하지 않다 | Attribute 순서·개수·타입에 맞춰야 한다 |
| Object의 모든 Attribute NULL과 Object NULL은 같다 | Object 존재 여부와 Attribute NULL을 구분한다 |
헷갈리는 개념
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 방식 | 대표 장점 | 대표 비용·주의 |
|---|---|---|
| 여러 Scalar Subquery | SQL 작성이 직관적 | 같은 Source 반복 Access 가능 |
| 한 Scalar Aggregate | 한 Lookup에서 여러 Aggregate 계산 가능 | 여러 Column을 직접 반환하기 어려움 |
| 사전 집계 + Join | 상세 Source를 한 번 처리해 전체 처리량 절감 가능 | 전체 Group By·Workarea·TEMP 비용 |
| 대상 Key 제한 후 집계 | 불필요한 전체 집계 감소 | Query Transformation 후 실제 Plan 확인 필요 |
| LATERAL·OUTER APPLY | Outer Key별로 여러 Column·Top-N 반환 | Outer가 크면 반복 Starts 증가 |
| Object Type | 구조화된 단일 값 | Schema Type 의존성과 사용 복잡성 |
| 문자열 포장 | 구버전·Legacy에서 구현 가능 | 타입·NULL·길이·NLS 위험 |
대표 계산·예제
평균·최소·최대는 동일한 입력 Row Set에서 계산할 수 있습니다.
SQL좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
SELECT customer_id,
AVG(amount) AS avg_amount,
MIN(amount) AS min_amount,
MAX(amount) AS max_amount,
COUNT(*) AS trade_count
FROM trade
WHERE trade_date >= TRUNC(SYSDATE, 'MM')
GROUP BY customer_id;
하나의 GROUP BY Operation이 입력을 읽으며 여러 Aggregate를 함께 계산합니다.
도식좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
TRADE 입력 한 번 처리
→ 고객번호별 Group 생성
→ AVG·MIN·MAX·COUNT 동시 계산
Aggregate 식이 네 개라고 해서 Table을 네 번 읽는 구조가 되지는 않습니다. 실행계획에서는 하나의 HASH GROUP BY 또는 SORT GROUP BY 아래에 입력 Access가 배치될 수 있습니다.
다만 Aggregate마다 입력 의미가 다르면 한 번의 단순 집계로 합칠 수 없습니다.
SQL좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
SUM(CASE WHEN trade_type = 'BUY' THEN amount END)
SUM(CASE WHEN trade_type = 'SELL' THEN amount END)
COUNT(DISTINCT product_id)
조건부 Aggregate는 같은 Row Set에서 함께 계산할 수 있지만, 서로 다른 날짜 범위·Join 관계·DISTINCT Key가 필요하면 Workarea와 결과 의미를 별도로 검토합니다.
내 최근 연습 오답
현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.
오답 기록을 확인하고 있습니다.