SQLD관리 구문옵티마이저/인덱스난이도 2MCQ

SQLD 옵티마이저/인덱스 기출문제 #254

문제

다음 SQL에서 CBO가 인덱스를 사용하지 않고 FULL TABLE SCAN을 선택하는 이유로 가장 적절한 것은?

[테이블 정보]

  • ORDERS 테이블: 1,000,000건
  • ORDER_DATE 컬럼 인덱스 존재
  • 최근 1년간 주문: 950,000건
  • 1년 이전 주문: 50,000건
SQL
SELECT * FROM ORDERS WHERE ORDER_DATE >= '2023-01-01'

① 인덱스가 없어서 ② 날짜 함수를 사용했기 때문에 ③ 조회되는 데이터 비율이 너무 높아서 ④ ORDER BY 절이 없어서

정답

3

해설

③ 정답. 전체 100만건 중 95만건(95%)을 조회하는 조건이므로, CBO는 대부분의 데이터를 읽어야 하는 상황에서 FULL TABLE SCAN이 더 효율적이라고 판단합니다. 일반적으로 15-20% 이상의 데이터를 조회할 때 FULL TABLE SCAN이 선택됩니다. ① ORDER_DATE에 인덱스가 존재한다고 명시되어 있습니다. ② 함수를 사용하지 않은 단순 비교 조건입니다. ④ ORDER BY 절은 인덱스 사용 여부와 직접적 관련이 없습니다.

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[SQLD] 옵티마이저/인덱스 관리 구문 기출 #254 | sqldpass