[ Programing ]/Database
[MySQL] MAX() 와 ORDER BY [column] DESC LIMIT 1 효율성
Mister_Q
2023. 5. 23. 10:25
> SELECT [column] FROM [table] ORDER BY [column] DESC LIMIT 1;
> SELECT MAX( [column] ) FROM [table];
둘의 결과는 같으나 쿼리 최적화에 대한 고민은 해봤을듯 하다.
테스트에선 차이가 보이지 않으나 대용량에서 사용시 조회 차이가 눈에 보일 정도의 딜레이가 될수 있기에.
ORDER BY 자체는 상당히 부담이 큰 조건으로 왠만하면 사용을 자제한다.
조회할 테이블을 전체 정렬을 하는 상황이 되어 부담 스러운 일이 되지만,
LIMIT 1이 있어 풀 조회 전에 차단이 되 덜 부담 스러운 상황이 되는 꼼수라고 할까.
MAX()는 자체 지원하는 함수.
검증된 기능이라는 이야기.
이러면 뭘 쓸까 고민이 되는데 DESC 구조 조회를 해 보면.
> DESC SELECT MAX( [column] ) FROM [table];
Extra 에 Select tables optimized away 라고 최적화된 기능이라고 나온다.
MAX 값을 출력하는 것이라면 ORDER BY [column] DESC LIMIT 1 보다 MAX()를 활용하자.