Index Quiz

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

문제 1 / 7

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

MySQL 인덱스 퀴즈 - 세트 F

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

문제 1. 다음 test_table 테이블이 있다 ```sql CREATE TABLE test_table ( id INT PRIMARY KEY, name VARCHAR(100), age INT, address VARCHAR(200), Index idx_name_age(name, age) ); ``` 다음 쿼리를 실행할 때 실행계획에 대한 서술로 옳은 것을 고르시오. ```sql SELECT name, age FROM test_table WHERE age > 0; ```

  • idx_name_age를 활용하지 않는다.
  • idx_name_age 인덱스 스캔만 일어나고 테이블 스캔은 일어나지 않는다.
  • idx_name_age를 스캔한 이후, 테이블 스캔이 일어난다.

문제 2. 다음 test_table 테이블이 있다 ```sql CREATE TABLE test_table ( id INT PRIMARY KEY, name VARCHAR(100), age INT, address VARCHAR(200), Index idx_name_age(name, age) ); ``` 다음 쿼리를 실행할 때 실행계획에 대한 서술로 옳은 것을 고르시오. ```sql SELECT id, name, age FROM test_table WHERE age > 0; ```

  • idx_name_age를 활용하지 않는다.
  • idx_name_age 인덱스 스캔만 일어나고 테이블 스캔은 일어나지 않는다.
  • idx_name_age를 스캔한 이후, 테이블 스캔이 일어난다.

문제 3. 다음과 같은 test_table이 있다. ```sql CREATE TABLE test_table ( id INT PRIMARY KEY, name VARCHAR(100), age INT, address VARCHAR(200), Index idx_name_age(name, age) ); ``` 다음 쿼리를 실행할 때 실행계획에 대한 서술로 옳은 것을 고르시오. ```sql SELECT * FROM test_table WHERE age > 0; ```

  • idx_name_age를 활용하지 않는다.
  • idx_name_age 인덱스 스캔만 일어나고 테이블 스캔은 일어나지 않는다.
  • idx_name_age를 스캔한 이후, 테이블 스캔이 일어난다.

문제 4. 다음 sample_table 테이블이 있다. ```sql CREATE TABLE sample_table ( id BIGINT PRIMARY KEY, a INT, b INT, data VARCHAR(100) ); CREATE INDEX idx_a_b ON sample_table (a, b); ``` 다음 쿼리에서 쿼리 실행계획에 대해 알맞은 것을 고르시오. ```sql SELECT COUNT(*) FROM sample_table; ```

  • 테이블 풀 스캔 : 데이터 테이블에 직접 접근하여 모든 행 탐색
  • 인덱스 풀 스캔 : 인덱스 테이블에 접근하여 모든 행 탐색
  • 인덱스 레인지 스캔 : 인덱스 테이블에 접근하여 특정 범위 탐색
  • 루스 인덱스 스캔 : 인덱스 테이블을 띄엄띄엄 건너뛰며 탐색

문제 5. 복합 컬럼 col1, col2를 대상으로 유니크 인덱스 조건이 걸린 test_table이 있다. ```sql CREATE TABLE test_table ( id INT AUTO_INCREMENT PRIMARY KEY, col1 VARCHAR(50), col2 VARCHAR(50), UNIQUE KEY uniq_col1_col2 (col1, col2) ); ``` 다음 쿼리를 실행할 때 예상되는 결과를 고르시오 ```sql INSERT INTO test_table (col1, col2) VALUES ('A', NULL); INSERT INTO test_table (col1, col2) VALUES ('A', NULL); ```

  • 두 삽입 쿼리 모두 성공한다
  • 첫번째 삽입 쿼리는 성공하고 두번째 삽입 쿼리는 실패한다
  • 두 삽입 쿼리 모두 실패한다

문제 6. 다음 employees 테이블이 있다 ```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) ); ``` 다음 쿼리에 대한 실행계획 중 가장 알맞은 것을 고르시오. (단, MySql 8.0 이상이며 디폴트 설정을 따른다) ```sql SELECT gender, birth_date FROM employees WHERE birth_date >= '1965-02-01'; ```

  • 테이블 스캔 : 인덱스를 활용하지 않고 전체 테이블을 스캔함
  • 인덱스 풀 스캔 : 인덱스 테이블을 전체 스캔함
  • 인덱스 스킵 스캔 : 인덱스 테이블을 건너 뛰면서 읽음
  • 인덱스 스캔 후, 테이블 스캔

문제 7. 다음 employees 테이블이 있다 ```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) ); ``` 다음 쿼리에 대한 실행계획 중 가장 알맞은 것을 고르시오. (단, MySql 8.0 이상이며 디폴트 설정을 따른다) ```sql SELECT * FROM employees WHERE birth_date >= '1965-02-01'; ```

  • 테이블 스캔 : 인덱스를 활용하지 않고 전체 테이블을 스캔함
  • 인덱스 풀 스캔 : 인덱스 테이블을 전체 스캔함
  • 인덱스 스킵 스캔 : 인덱스 테이블을 건너 뛰면서 읽음
  • 인덱스 스캔 후, 테이블 스캔

다른 퀴즈 세트 보기