TIL

10.3(2) 실행 계획 분석(table, partitions)

10.3.3 table 칼럼

SELECT * FROM
	(SELECT de.emp_no FROM dept_emp de GROUP BY de.emp_no) tb,
	employees e
WHERE e.emp_no=tb.emp_no;
id select_type table type key rows Extra
1 PRIMARY ALL NULL 33143 NULL
1 PRIMARY e eq_ref PRIMARY 1 NULL
2 DERIVED de index ix_empno_fromdate 33143 Using index
  1. 첫 번째 라인의 테이블이 <derived2>이니 이 라인보다 id=2인 라인이 먼저 실행되고 그 결과가 파생 테이블로 준비돼야 한다는 것을 알 수 있다.
  2. 세 번째 라인(id=2)이 DERIVED이기 때문에 이 라인은 table 칼럼에 표시된 dept_emp 테이블을 읽어 파생 테이블을 생성하는 것을 알 수 있다.
  3. 첫 번째 라인과 두 번째 라인이 같은 id 값을 가지기 때문에 조인되는 쿼리라는 것을 알 수 있다.
    1. table 칼럼이 <drived2>인 라인이 위에 표시되었으므로 이 라인이 드라이빙 테이블로 조인되었다는 것을 알 수 있다.

10.3.4 partitions 칼럼

CREATE TABLE employees (
	...
	PRIMARY KEY (emp_no, hire_date)
) PARTITION BY RANGE COLUMNS(hire_date)
(PARTITION p1986_1990 VALUES LESS THAN ('1990-01-01'),
...
PARTITION p2001_2005 VALUES LESS THAN ('2006-01-01'));

EXPLAIN SELECT * FROM employees 
WHERE hire_date BETWEEN '1999-11-15' AND '2000-01-15';
id select_type table partitions type rows
1 SIMPLE employees p1996_2000,p2001_2005 ALL 21743