SQLP

시험 직전 요약장

판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.

이론 목록

옵티마이저 목표 모드: ALL_ROWS와 FIRST_ROWS(n)

원래 이론 →

판단 기준

혼동하기 쉬운 판단정확한 기준
FIRST_ROWS(20)은 결과를 20행으로 제한한다비용 비교 목표만 바꾸며 결과 제한은 SQL에 별도로 작성한다
Parameter에 FIRST_ROWS_20을 사용할 수 있다Parameter의 n은 1·10·100·1000이며, 20은 Hint의 FIRST_ROWS(20)처럼 지정한다
FIRST_ROWS(n)이면 항상 Index와 Nested Loops를 선택한다통계, 데이터량, 사용 가능한 경로와 Blocking Operation에 따라 달라진다
FIRST_ROWS Hint는 작성하면 항상 적용된다DELETE·UPDATE 및 Blocking Operation이 있는 SELECT Block 등에서는 무시될 수 있다
ORDER BY가 있으면 항상 FIRST_ROWS Hint가 무시된다인덱스가 정렬을 제공해 Blocking Sort가 없으면 앞쪽 행을 빠르게 생산할 수 있다
첫 화면이 빠르면 전체 성능도 좋다첫 n행 시간과 전체 Fetch 완료시간을 따로 측정한다
ALL_ROWS는 항상 Full Scan과 Hash Join이다전체 Cost가 낮다면 Index와 Nested Loops도 선택할 수 있다
FIRST_ROWS와 FIRST_ROWS(n)은 동일하다전자는 비용·휴리스틱 혼합의 호환 방식, 후자는 비용 기반 n행 목표다
Session 전체에 FIRST_ROWS를 설정하면 모든 화면이 최적화된다SQL별 반환량·정렬·인덱스 구조가 달라 회귀 검증이 필요하다
Top-N SQL에는 FIRST_ROWS Hint가 반드시 필요하다결과 제한 자체가 중요한 입력이며 Hint 필요성은 실제 계획으로 검증한다

이 부분의 원문 →

헷갈리는 개념

n이 없는 FIRST_ROWS는 비용과 휴리스틱을 혼합하여 처음 몇 행을 빠르게 전달하려는 과거 호환 방식입니다.

도식
FIRST_ROWS
  → 비용과 휴리스틱을 혼합
  → 하위 호환성과 Plan 안정성을 위해 유지
  → Oracle은 FIRST_ROWS_n 사용을 권장

FIRST_ROWS(n)
  → 명시한 n행의 초기 응답을 목표로 하는 비용 기반 방식

SQLP 문제에서 두 용어가 함께 등장하면 다음을 구분해야 합니다.

  • n의 유무
  • 순수 비용 기반 목표인지
  • Parameter인지 Hint인지
  • 실제 결과 제한이 존재하는지

이 부분의 원문 →

대표 계산·예제

SQL
ALTER SESSION SET optimizer_mode = ALL_ROWS;

개별 Statement Block에서는 다음 Hint를 사용할 수 있습니다.

SQL
SELECT /*+ ALL_ROWS */
       order_id,
       customer_id,
       order_date
FROM orders
WHERE status = 'READY';

이 부분의 원문 →

내 최근 연습 오답

현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.

학습 기록 →

오답 기록을 확인하고 있습니다.