문제
다음 SQL 쿼리에서 성능 최적화와 관련된 설명으로 가장 옳은 것은?
SQLSELECT 부서명, COUNT(*) as 인원수 FROM 직원 WHERE 입사일 >= '2020-01-01' GROUP BY 부서명 HAVING COUNT(*) > 5 ORDER BY 인원수 DESC
① WHERE 절의 조건은 인덱스를 활용할 수 없으므로 전체 테이블 스캔이 발생한다 ② HAVING 절은 GROUP BY 이전에 실행되어 불필요한 그룹화를 방지한다 ③ 입사일 컬럼에 인덱스가 있다면 WHERE 절에서 효율적인 필터링이 가능하다 ④ COUNT(*) 함수는 항상 기본키 인덱스만 사용하므로 다른 인덱스는 무의미하다
정답
3번
해설
입사일 컬럼에 인덱스가 있다면 WHERE 절의 범위 조건(>=)에서 인덱스를 활용하여 효율적으로 필터링할 수 있다. ①범위 조건도 인덱스 활용 가능, ②HAVING은 GROUP BY 이후에 실행, ④COUNT(*)는 다양한 인덱스를 활용할 수 있다.