전체 글 57

[56번] 인덱스 머지 - 합집합

문제다음 테이블이 있다.CREATE TABLE index_test ( id INT PRIMARY KEY AUTO_INCREMENT, col1 INT, col2 INT, col3 VARCHAR(100));CREATE INDEX idx_col1 ON index_test(col1);CREATE INDEX idx_col2 ON index_test(col2); 다음 쿼리에서 옵티마이저가 인덱스를 활용하는 방법을 예측하시오SELECT * FROM index_test WHERE col1 = 1 OR col2 = 2;두 조건 각각에 대해 상당한 행이 필터링된다. (col1 = 1인 행은 500개, col2 = 2인 행은 300개이며, 전체 테이블은 100만 건이다)"선지A) 테이블 풀스캔을 통해 조건에 만족하는..

[55번] 인덱스 머지 - 교집합

문제다음 테이블이 있다.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_first_name (first_name),); 다음 쿼리에서 옵티마이저가 인덱스를 활용하는 방법을 예측하시오SELECT * FROM employees WHERE first_name='Georgi' AND emp_no BETWEEN 10000..

[54번] 인덱스 키의 크기와 탐색 성능

문제다음 테이블이 있다.CREATE TABLE products ( product_id INT PRIMARY KEY, category_code CHAR(3) NOT NULL, product_name CHAR(5) NOT NULL, description TEXT); 원하는 데이터 행을 category_code를 통해서도 찾을 수도 있고, product_name을 통해서도 찾을 수도 있다. 어떤 컬럼으로 인덱스를 만드는 것이 I/O 바운드 작업을 덜 할 수 있는가?선지A) category_codeB) product_name 정답 더보기A) category_codeB) product_name 핵심 해설 InnoDB는 데이터 페이지(기본 16KB) 단위로 데이터를 로드합니다. 인덱스 키의..

[53번] 함수 기반 인덱스 (2)

문제다음 함수 기반 인덱스가 선언된 테이블이 있다.CREATE TABLE human ( user_id BIGINT PRIMARY KEY, first_name VARCHAR(10), last_name VARCHAR(10), INDEX ix_fullname ((CONCAT(first_name, '', last_name))) #함수 기반 인덱스); 각 쿼리의 ix_fullname 인덱스 활용여부를 고르시오.1번 쿼리 : SELECT * FROM human WHERE CONCAT(first_name, ' ', last_name) = 'john smith';2번 쿼리 : SELECT * FROM human WHERE CONCAT(first_name, '', last_name) LIKE 'john%'; 선지..

[52번] 함수 기반 인덱스 (1)

문제다음 함수 기반 인덱스가 선언된 테이블이 있다.CREATE TABLE human ( user_id BIGINT PRIMARY KEY, first_name VARCHAR(10), last_name VARCHAR(10), INDEX ix_fullname ((CONCAT(first_name, '', last_name))) #함수 기반 인덱스); 각 쿼리의 ix_fullname 인덱스 활용여부를 고르시오.1번 쿼리 : SELECT * FROM human WHERE CONCAT(first_name, '', last_name) = 'johnsmith';2번 쿼리 : EXPLAIN SELECT * FROM human WHERE first_name = 'john' AND last_name = 'smith';..

[51번] Index Page Merge

문제기본키를 AUTO_INCREMENT, UUID로 하는 각각 두 가지 테이블이 있다CREATE TABLE t_ai ( id BIGINT AUTO_INCREMENT PRIMARY KEY, num INT NOT NULL, payload CHAR(100) NOT NULL) ENGINE=InnoDB;CREATE TABLE t_uuid ( id BINARY(16) PRIMARY KEY, num INT NOT NULL, payload CHAR(100) NOT NULL) ENGINE=InnoDB; 각 테이블에 1000만건의 데이터를 삽입했다. 이때 num은 rowID와 같이 1부터 순차적으로 증가한다.가령 테이블에 다음과 같이 저장되어 있다//ai_table+-------------..

[50번] Index Page Split

문제기본키를 AUTO_INCREMENT, UUID로 하는 각각 두 가지 테이블이 있다CREATE TABLE ai_table ( id BIGINT AUTO_INCREMENT PRIMARY KEY, payload CHAR(100) NOT NULL) ENGINE=InnoDB;CREATE TABLE uuid_table ( id BINARY(16) PRIMARY KEY, payload CHAR(100) NOT NULL) ENGINE=InnoDB; Page Split을 고려하여 10만건의 대량 데이터를 삽입할 때의 두 테이블의 실행 속도를 비교하시오 선지A) AUTO_INCREMENT를 기본키로 하는 테이블의 데이터 삽입속도가 더욱 빠르다B) UUID를 기본키로 하는 테이블의 데이터 삽입 속도..

[49번] Index Condition PushDown (ICP) (2)

문제 다음 test_icp 테이블이 있다.CREATE TABLE test_icp ( id INT PRIMARY KEY AUTO_INCREMENT, num INT, name VARCHAR(255), address VARCHAR(255), INDEX idx_num_name (num, name)); MySql 8.0 버전에서 다음 쿼리에 대하여 idx_num_name에 대한 활용계획으로 알맞은 것을 고르시오SET optimizer_switch = 'index_condition_pushdown=off';SELECT * FROM test_icp WHERE num = 1 and name like '%q';선지A) (num =1) 을 인덱스 테이블에서 필터링하고, 테이블을 스캔하며, (na..

[48번] Index Condition PushDown (ICP) (1)

문제 다음 test_icp 테이블이 있다.CREATE TABLE test_icp ( id INT PRIMARY KEY AUTO_INCREMENT, num INT, name VARCHAR(255), address VARCHAR(255), INDEX idx_num_name (num, name)); MySql 8.0 버전에서 다음 쿼리에 대하여 idx_num_name에 대한 활용계획으로 알맞은 것을 고르시오SELECT * FROM test_icp WHERE num = 1 and name like '%q';선지A) (num =1) 을 인덱스 테이블에서 필터링하고, 테이블을 스캔하며, (name like '%q') 조건에 알맞는 행을 골라낸다.B) (num=1) 과 (name like ..

[47번] 내림차순 인덱스

문제다음 t1 데이터 테이블이 있다.CREATE TABLE t1( tid INT NOT NULL AUTO_INCREMENT, TABLE_NAME VARCHAR(64), COLUMN_NAME VARCHAR(64), ORDINAL_POSITION INT, PRIMARY KEY (tid))ENGINE=InnoDB; 다음과 같이 내림차순으로 tid와 COLUMN_NAME을 탐색하는 쿼리가 있다.SELECT tid, column_name FROM t1 ORDER BY COLUMN_NAME DESC LIMIT 11862915, 1 오름차순 인덱스와 내림차순 인덱스가 있을 때 각 인덱스 활용 시나리오의 효율을 비교하시오.CREATE INDEX co..