MySQL 인덱스 퀴즈 - 세트 C
총 7개 문제로 구성된 MySQL 인덱스 학습 퀴즈입니다.
문제 1. 다음과 같은 person 테이블과 name에 대한 idx_name 인덱스가 있다.
```sql
CREATE TABLE person (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department_id INT NOT NULL,
INDEX idx_name (name)
);
```
다음 쿼리는 idx_name 인덱스를 활용하는가?
```sql
SELECT * FROM person WHERE name like 'A%';
```
문제 2. 다음과 같은 person 테이블과 name에 대한 idx_name 인덱스가 있다.
```sql
CREATE TABLE person (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department_id INT NOT NULL,
INDEX idx_name (name)
);
```
다음 쿼리는 idx_name 인덱스를 활용하는가?
```sql
SELECT * FROM person WHERE name like '%A';
```
문제 3. 다음과 같은 person 테이블과 name에 대한 idx_name 인덱스가 있다.
```sql
CREATE TABLE person (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department_id INT NOT NULL,
INDEX idx_name (name)
);
```
다음 쿼리는 idx_name 인덱스를 활용하는가?
```sql
SELECT * FROM person as p WHERE p.name = 'Coli';
```
문제 4. 다음과 같은 person 테이블과 name에 대한 idx_name 인덱스가 있다.
```sql
CREATE TABLE person (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department_id INT NOT NULL,
INDEX idx_name (name)
);
```
다음 쿼리는 idx_name 인덱스를 활용하는가?
```sql
SELECT * FROM person as p WHERE p.name != 'Ever';
```
문제 5. 다음과 같은 student 테이블과 age 컬럼을 대상으로 idx_student_age 인덱스가 있다.
```sql
CREATE TABLE student (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
age INT NOT NULL,
INDEX idx_student_age(age)
);
```
다음 쿼리는 인덱스 idx_student_age를 활용하는가?
```sql
SELECT * FROM student WHERE age = '30';
```
문제 6. 다음 employees 테이블에 ix_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 ix_firstname (first_name)
);
```
다음 쿼리는 인덱스 ix_firstname을 활용하는가?
```sql
SELECT * FROM employees WHERE first_name BETWEEN 'Ebbe' AND 'Gad';
```
문제 7. MySQL의 InnoDB 스토리지 엔진에서 인덱스 레인지 스캔 이후 발생할 수 있는 성능 저하의 주요 원인은 무엇인가?
- 레인지 스캔은 항상 디스크의 연속적인 블록만 읽기 때문에 I/O 병목이 없다.
- 레인지 스캔 후 각 레코드의 실제 데이터를 접근하기 위해 무작위(Random) 디스크 접근이 발생할 수 있다.
- 레인지 스캔은 모든 테이블 데이터를 정렬한 후 메모리에 적재하므로 I/O가 발생하지 않는다.
- InnoDB는 클러스터형 인덱스를 사용하지 않기 때문에 레인지 스캔은 의미가 없다.
다른 퀴즈 세트 보기