[MySQL] ORDER BY가 적용이 안되는 이유

0
  • 아래 SQL문과 같이 ORDER BY가 두 개 이상일 경우 안쪽 ORDER BY는 적용이 안된다.
  • 최종 결과는 바깥쪽 ORDER BY에 의해 결정되므로 옵티마이저가 안쪽 ORDER BY는 실행 할 필요없다고 판단하고 해당 명령을 무시한다.
  • 옵티마이저 : 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 엔진
select *
from(
	SELECT D2.name AS `부서명`,
	E.name AS `사원명`,
	DATE(E.regDate) AS `입사일`,
	CONCAT(FORMAT(E.salary, 0), '만원') AS `연봉`
	FROM emp AS E
	INNER JOIN (
		SELECT E.deptId AS id,
		MAX(E.salary) AS maxSalary
		FROM emp AS E
		GROUP BY E.deptId
	) AS D
	ON E.deptId = D.id
	AND E.salary = D.maxSalary
	INNER JOIN dept AS D2 # 추가 조인
	ON E.deptId = D2.id
	ORDER BY E.id desc   # ORDER BY 적용 X
) as E
GROUP BY E.`부서명`;



  • 하지만, ORDER BY 다음에 LIMIT 명령어가 온다면, LIMIT을 실행하기 위해서 ORDER BY가 실행된다.
ORDER BY E.id desc
limit 3
profile
초심 잃지 않기

0개의 댓글