Index Quiz

MySQL 인덱스에 대한 지식을 테스트하고 향상시켜보세요!

문제 1 / 7

질문이 여기에 표시됩니다...

MySQL 인덱스 퀴즈 - 세트 D

총 7개 문제로 구성된 MySQL 인덱스 학습 퀴즈입니다.

문제 1. 다음과 같은 테이블 tbl과 DATE 자료형의 컬럼인 date_column에 대한 인덱스 tbl_idx가 있다. ```sql CREATE TABLE tbl ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), date_column DATE ); CREATE INDEX tbl_idx ON tbl (date_column); ``` 다음 쿼리는 인덱스 tbl_idx를 활용할까? ```sql SELECT * FROM tbl WHERE EXTRACT(YEAR FROM date_column) = 2024; ```

  • 활용한다
  • 활용하지 않는다

문제 2. 다음 employees 테이블과 복합 컬럼 (gender, birth_date)로 생성한 복합 인덱스 idx_gender_birthdate가 있다고 가정하자 ```sql CREATE TABLE employees ( emp_no INT NOT NULL, birth_date DATE NOT NULL, first_name VARCHAR(14) NOT NULL, last_name VARCHAR(16) NOT NULL, gender ENUM('M','F') NOT NULL, hire_date DATE NOT NULL, PRIMARY KEY (emp_no), INDEX idx_gender_birthdate (gender, birth_date) ); ``` 다음 쿼리는 idx_gender_birth_date 인덱스를 활용하는가? ```sql SELECT * FROM employees WHERE gender = 'M' AND birth_date > '1965-02-01'; ```

  • 활용한다
  • 활용하지 않는다

문제 3. 다음 employees 테이블과 복합 컬럼 (gender, birth_date)로 생성한 복합 인덱스 idx_gender_birthdate가 있다고 가정하자 ```sql CREATE TABLE employees ( emp_no INT NOT NULL, birth_date DATE NOT NULL, first_name VARCHAR(14) NOT NULL, last_name VARCHAR(16) NOT NULL, gender ENUM('M','F') NOT NULL, hire_date DATE NOT NULL, PRIMARY KEY (emp_no), INDEX idx_gender_birth_date (gender, birth_date) ); ``` 다음 쿼리는 idx_gender_birth_date 인덱스를 활용하는가? ```sql SELECT * FROM employees WHERE gender = 'M' OR birth_date > '1965-02-01'; ```

  • 활용한다
  • 활용하지 않는다

문제 4. 다음과 같은 employees 테이블과 first_name컬럼을 대상으로 한 idx_firstname 인덱스가 존재한다. ```sql CREATE TABLE employees ( emp_no INT NOT NULL, birth_date DATE NOT NULL, first_name VARCHAR(14) NOT NULL, last_name VARCHAR(16) NOT NULL, gender ENUM('M','F') NOT NULL, hire_date DATE NOT NULL, PRIMARY KEY (emp_no), INDEX idx_firstname (first_name) ); ``` 다음 쿼리는 idx_firstname을 활용하는가? ```sql SELECT * FROM employees emp WHERE emp.first_name IN ('Georgi', 'Parto'); ```

  • 활용한다
  • 활용하지 않는다

문제 5. 다음과 같은 employees 테이블과 first_name컬럼을 대상으로 한 idx_firstname 인덱스가 존재한다. ```sql CREATE TABLE employees ( emp_no INT NOT NULL, birth_date DATE NOT NULL, first_name VARCHAR(14) NOT NULL, last_name VARCHAR(16) NOT NULL, gender ENUM('M','F') NOT NULL, hire_date DATE NOT NULL, PRIMARY KEY (emp_no), INDEX idx_firstname (first_name) ); ``` 다음 쿼리는 idx_firstname을 활용하는가? ```sql SELECT * FROM employees emp WHERE emp.first_name NOT IN ('Georgi', 'Parto'); ```

  • 활용한다
  • 활용하지 않는다

문제 6. 다음 테이블과 인덱스가 있다. ```sql CREATE TABLE test_case ( col1 BIGINT PRIMARY KEY, col2 VARCHAR(100), col3 INT ) ENGINE=InnoDB; CREATE INDEX idx_col2 ON test_case(col2); ``` 아래 쿼리의 실행 방식에 대한 설명으로 올바른 것은? ```sql SELECT * FROM test_case WHERE col2 = 'ABC'; ```

  • idx_col2의 리프 노드에서 col1와 col2를 찾을 수 있으므로, col3 값을 가져오기 위해 클러스터링 인덱스를 한 번 더 조회해야 한다.
  • idx_col2의 리프 노드에서 col2를 찾을 수 있으므로, col1과 col3 값을 가져오기 위해 클러스터링 인덱스를 한 번 더 조회해야 한다.
  • idx_col2의 리프 노드에 col1, col2, col3가 모두 저장되어 있으므로 세컨더리 인덱스 테이블 접근만으로 바로 결과를 반환할 수 있다.
  • 세컨더리 인덱스를 사용할 수 없으며, 클러스터링 인덱스만을 이용해 탐색한다.

문제 7. 다음 테이블과 인덱스가 있다. ```sql CREATE TABLE test_case ( col1 BIGINT PRIMARY KEY, col2 VARCHAR(100), col3 INT ) ENGINE=InnoDB; CREATE INDEX idx_col2 ON test_case(col2); ``` 아래 쿼리의 실행 방식에 대한 설명으로 올바른 것은? ```sql SELECT col1 FROM test_case WHERE col2 = 'ABC'; ```

  • idx_col2의 리프 노드에 col1와 col2가 모두 저장되어 있으므로 인덱스 테이블만 활용하여 바로 결과를 반환할 수 있다.
  • idx_col2의 리프 노드에서 col1와 col2를 찾을 수 있으므로, col3 값을 가져오기 위해 클러스터링 인덱스를 한 번 더 조회해야 한다.
  • idx_col2의 리프 노드에 col2 값이 저장되어 있으므로, col1 값을 가져오기 위해 클러스터링 인덱스를 한 번 조회한다.
  • 세컨더리 인덱스를 사용할 수 없으며, 항상 클러스터링 인덱스를 이용해 탐색한다.

다른 퀴즈 세트 보기