Index Quiz

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

문제 1 / 7

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

MySQL 인덱스 퀴즈 - 세트 E

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

문제 1. 다음 중 기본키에 대한 설명으로 옳은 것을 **하나** 고르시오.

  • PK는 nullable 하게 선언 가능하다.
  • PK는 BIGINT 타입으로만 선언 가능하다.
  • PK는 짧게 설정할 것을 권장한다.
  • PK가 선언되지 않고 NOT NULL UNIQUE 키만 선언되었다면, 내부적으로 row num을 생성하여 클러스터링 인덱스 키로 사용한다.

문제 2. 다음과 같은 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), ); ``` employees 테이블에는 다음 2가지 인덱스가 존재한다. ```sql CREATE INDEX idx_date_name_gender_pk ON employees(birth_date, first_name, gender, emp_no); CREATE INDEX idx_name_gender_pk ON employees(first_name, gender, emp_no); ``` 다음 쿼리는 어떤 인덱스를 활용하는가? ```sql SELECT * FROM employees WHERE birth_date BETWEEN '1953-05-30' AND '1954-05-31' AND first_name = 'Ebbe' AND gender = 'F' GROUP BY emp_no; ```

  • idx_date_name_gender_pk
  • idx_name_gender_pk

문제 3. 다음 테이블이 있다. ```sql CREATE TABLE my_table ( id BIGINT PRIMARY KEY AUTO_INCREMENT, a INT, b INT, date_column DATE, INDEX idx_a_date (a, date_column) ); ``` 먼저 해당 쿼리를 실행했다고 가정한다. ```sql EXPLAIN SELECT date_column, COUNT(*) FROM my_table WHERE a = 1 GROUP BY date_column; ``` 위의 쿼리에 `b=1` 조건을 추가하여 실행할 때 위의 쿼리와의 실행속도를 비교하시오. ```sql EXPLAIN SELECT date_column, COUNT(*) FROM my_table WHERE a = 1 AND b = 1 GROUP BY date_column; ```

  •  Same: 쿼리 성능이 거의 동일하다
  • Not enough information: 확실한 답변을 내리기엔 정보가 부족하다
  • Slower: 쿼리 수행 시간이 더 오래 걸린다
  •  Faster: 쿼리 수행 시간이 더 짧아진다

문제 4. 다음 dept_empt 테이블이 있다 ```sql CREATE TABLE dept_emp ( emp_no int NOT NULL, dept_no char(4) NOT NULL, from_date date NOT NULL, to_date date NOT NULL, PRIMARY KEY (`dept_no`,`emp_no`), ); ``` 다음 쿼리에 대한 인덱스 스캔에 대한 설명 중 옳은 것은? ```sql SELECT dept_no, MIN(emp_no) FROM dept_emp as emp WHERE emp.dept_no BETWEEN 'd002' AND 'd004' GROUP BY emp.dept_no; ```

  • dept_no가 'd002'와 'd004' 범위 안에서 인덱스를 듬성듬성 스캔한다 - 루스 인덱스 스캔
  • dept_no가 'd002'와 'd004' 범위 안인 인덱스를 모두 스캔한다 - 인덱스 레인지 스캔
  •  (dept_no, emp_no) 인덱스를 모두 스캔한다 - 인덱스 풀 스캔

문제 5. 다음의 test_table 이 있다. ```sql CREATE TABLE test_table ( id INT PRIMARY KEY AUTO_INCREMENT, col1 INT, col2 INT, col3 INT, col4 INT, INDEX idx_col1_col2_col3 (col1, col2, col3) ); ``` 다음 쿼리는 인덱스 루스 스캔을 활용 가능한가? ```sql SELECT co1, SUM(col2) FROM t1 GROUP BY col1; ```

  • 가능하다
  • 불가능하다

문제 6. 다음의 test_table 이 있다. ```sql CREATE TABLE test_table ( id INT PRIMARY KEY AUTO_INCREMENT, col1 INT, col2 INT, col3 INT, col4 INT, INDEX idx_col1_col2_col3 (col1, col2, col3) ); ``` 다음 쿼리는 인덱스 루스 스캔을 활용 가능한가? ```sql SELECT col1, AVG(DISTINCT col2) FROM tb_test GROUP BY col1; ```

  • 가능하다
  • 불가능하다

문제 7. 다음 broccoli 테이블이 있다. ```sql CREATE TABLE broccoli ( id INT PRIMARY KEY AUTO_INCREMENT, num INT, name VARCHAR(100), color VARCHAR(50), INDEX idx_name_color (name(5), color) #name의 앞 5글자를 따온 부분 인덱스 ); ``` 다음 쿼리는 인덱스 루스 스캔을 활용 가능한가? ```sql SELECT name, MIN(color) FROM broccoli GROUP BY name; ```

  • 가능하다
  • 불가능하다

다른 퀴즈 세트 보기