SQLP

시험 직전 요약장

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

이론 목록

인덱스를 활용하는 조건식: 컬럼 가공·묵시적 형변환·Sargability

원래 이론 →

판단 기준

혼동정확한 기준
컬럼에 함수가 있으면 Index를 절대 못 쓴다Function-Based Index·변환·다른 Index Access 가능성을 Plan으로 확인한다
Index Operation이 보이면 효율적이다access 범위·A-Rows·Buffers와 최종 Row를 함께 본다
묵시적 형변환은 결과만 맞으면 무해하다Index, 오류, NLS, CPU, Child Cursor에 영향을 준다
문자열 DATE 비교는 항상 같은 결과다NLS와 Format에 의존할 수 있다
하루 범위는 23:59:59까지다다음 날 시작 미만 반개구간이 정밀도에 안전하다
LIKE는 모두 같은 Index 특성을 가진다Prefix와 Leading Wildcard를 구분한다
IN은 Index를 못 쓴다INLIST ITERATOR와 값별 Index Scan이 가능하다
OR은 항상 Full Scan이다OR Expansion·Concatenation 등 변환 가능성이 있다
NVL 제거는 항상 동치다NULL 포함 여부와 반환 Type을 검증한다
FBI를 만들면 항상 사용된다표현식·통계·선택도·비용과 Null 조건을 확인한다
DETERMINISTIC 선언만 하면 함수가 안전하다실제로 같은 입력에 반복 가능한 결과를 반환해야 한다

이 부분의 원문 →

헷갈리는 개념

변경 전:

예시·텍스트
INDEX FULL SCAN ORDERS_DATE_IX
  filter(TO_CHAR("ORDER_DATE",'YYYYMMDD')=:B1)

A-Rows  2,000,000
Buffers    18,000
최종 Row      500

변경 후:

예시·텍스트
INDEX RANGE SCAN ORDERS_DATE_IX
  access("ORDER_DATE">=:B1 AND "ORDER_DATE"<:B2)

A-Rows      500
Buffers       12
최종 Row      500

같은 결과와 같은 Bind·Fetch 조건에서 작업량 감소를 검증합니다.


이 부분의 원문 →

대표 계산·예제

SQL
-- 컬럼 가공·NLS 의존 가능
WHERE TO_CHAR(order_date, 'YYYYMMDD') = :yyyymmdd

-- 컬럼 원형 유지
WHERE order_date >= TO_DATE(:yyyymmdd, 'YYYYMMDD')
AND   order_date <  TO_DATE(:yyyymmdd, 'YYYYMMDD') + 1

더 좋은 Application 계약은 문자열을 SQL 안에서 매번 날짜로 변환하는 것이 아니라 처음부터 DATE 또는 TIMESTAMP Bind를 전달하는 것입니다.

SQL
WHERE order_date >= :day_start
AND   order_date <  :next_day_start
이 부분의 원문 →

내 최근 연습 오답

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

학습 기록 →

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