TIL

9.2(3) GROUP BY와 DISTINCT

9.2.4 GROUP BY 처리

인덱스 스캔을 이용하는 GROUP BY (타이트 인덱스 스캔)

루스 인덱스 스캔을 이용하는 GROUP BY

MySQL 8.0부터는 루스 인덱스 스캔과 동일하게 동작하는 인덱스 스킵 스캔 최적화도 도입됐다. 8.0 이전에는 GROUP BY 절 처리를 위해서만 루스 인덱스 스캔이 사용됐지만 8.0 이후부터는 단순히 WHERE 절로만 검색하더라도 인덱스 스킵 스캔이 동작하면서 최적화가 가능해졌다.

임시 테이블을 사용하는 GROUP BY

9.2.5 DISTINCT 처리

SELECT DISTINCT …

집합 함수와 함께 사용된 DISTINCT

SELECT COUNT(DISTINCT s.salary)
FROM employees e, salaries s
WHERE e.emp_no=s.emp_no
AND e.emp_no BETWEEN 10001 AND 10100;
SELECT COUNT(DISTINCT emp_no) FROM employees;