SQLP
시험 직전 요약장
판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.
옵티마이저 목표 모드: ALL_ROWS와 FIRST_ROWS(n)
원래 이론 →판단 기준
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 혼동하기 쉬운 판단 | 정확한 기준 |
|---|---|
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는 비용과 휴리스틱을 혼합하여 처음 몇 행을 빠르게 전달하려는 과거 호환 방식입니다.
도식좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
FIRST_ROWS
→ 비용과 휴리스틱을 혼합
→ 하위 호환성과 Plan 안정성을 위해 유지
→ Oracle은 FIRST_ROWS_n 사용을 권장
FIRST_ROWS(n)
→ 명시한 n행의 초기 응답을 목표로 하는 비용 기반 방식
SQLP 문제에서 두 용어가 함께 등장하면 다음을 구분해야 합니다.
- n의 유무
- 순수 비용 기반 목표인지
- Parameter인지 Hint인지
- 실제 결과 제한이 존재하는지
대표 계산·예제
SQL좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
ALTER SESSION SET optimizer_mode = ALL_ROWS;
개별 Statement Block에서는 다음 Hint를 사용할 수 있습니다.
SQL좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
SELECT /*+ ALL_ROWS */
order_id,
customer_id,
order_date
FROM orders
WHERE status = 'READY';
내 최근 연습 오답
현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.
오답 기록을 확인하고 있습니다.