데이터베이스 기초

100만 행의 회원 표에서 회원번호(모두 다름), 도도부현(47종류), 성별(2종류로 거의 반반) 열에 각각 B+ 트리 인덱스를 만드는 것을 생각한다. WHERE 절로 한 열의 값을 지정하여 검색할 때 인덱스의 효과가 가장 작다고 생각되는 열은?

  1. A도도부현
  2. B성별
  3. C회원번호
정답과 해설 보기

정답: B. 성별

인덱스가 효과를 발휘하는 것은 조건에 맞는 행이 전체의 극히 일부로 좁혀지는 경우입니다. 회원번호는 모두 다르므로 조건에 맞는 것은 한 행뿐이며, 인덱스로 바로 도달할 수 있습니다. 도도부현은 47종류이므로 균등하게 나뉘어 있다면 값 하나로 약 100만 ÷ 47 ≒ 2만 1천 행(전체의 약 2%)으로 좁혀집니다. 성별은 2종류로 거의 반반이므로 어느 값을 지정해도 약 50만 행(약 50%)이 해당합니다. 이렇게 많은 행을 인덱스를 거쳐 한 행씩 꺼내면 표를 처음부터 차례로 읽는 전체 스캔보다 느려지는 경우가 많으므로, DBMS의 옵티마이저는 인덱스를 사용하지 않는 실행 방법을 고르기도 합니다. 이처럼 값의 종류가 많고 조건으로 행을 좁힐 수 있는 정도(선택도)가 높은 열일수록 인덱스의 효과는 커집니다.

이 분야 연습하기 분야로 돌아가기

데이터베이스 기초의 다른 문제

  1. NoSQL이라고 불리는 데이터베이스 중 키-값형의 특징으로 일반적으로 올바른 것은?
  2. 여러 서버에 데이터의 복제본을 두는 분산 데이터베이스에 대한 CAP 정리의 설명으로 적절한 것은?
  3. 관계형 데이터베이스의 용어에서 표(릴레이션)의 한 행에 해당하는 것은?
  4. 관계형 데이터베이스의 표에서 기본 키로 지정하는 열(또는 열의 조합)이 반드시 만족해야 하는 조건은?
  5. 사원 표(사원번호, 이메일주소, 이름, 부서)에서 사원번호와 이메일주소는 둘 다 사원마다 다르며 NULL이 되지 않는다. 이름과 부서는 다른 사원과 같아질 수 있다. 이 표의 후보 키를 모두 든 것은?