본문 바로가기
MySql

MySQL MIN / MAX 대 ORDER BY 및 LIMIT

by 베이스 공부 2020. 10. 27.
반응형

다음 쿼리 중 더 나은 방법을 고려할 수있는 방법은 무엇입니까? 당신의 이유는 무엇입니까 (코드 효율성, 더 나은 유지 보수성, 덜 WTFery) ...

SELECT MIN(`field`)
FROM `tbl`;

SELECT `field`
FROM `tbl`
ORDER BY `field`
LIMIT 1;

 

해결 방법

 

인덱싱되지 않은 필드를보고있는 최악의 경우 MIN () 을 사용하려면 테이블의 단일 전체 패스가 필요합니다. SORT LIMIT 를 사용하려면 파일 정렬이 필요합니다. 큰 테이블에 대해 실행하면 감지 된 성능에 상당한 차이가있을 수 있습니다. 무의미한 데이터 포인트로서 MIN () 은 .36 초가 걸렸고 SORT LIMIT 는 제 개발 서버의 106,000 행 테이블에 대해 .84 초를 걸었습니다.

그러나 인덱싱 된 열을보고있는 경우 차이를 알아 채기가 더 어렵습니다 (두 경우 모두 의미없는 데이터 포인트는 0.00 초임). 그러나 Explain의 출력을 보면 MIN () 이 인덱스에서 가장 작은 값 ( 'Select tables optimize away'및 'NULL'행)을 간단히 추출 할 수있는 반면 SORT LIMIT 는 여전히 인덱스 (106,000 행)의 정렬 된 순회를 수행해야합니다. 실제 성능에 미치는 영향은 미미할 수 있습니다.


 

참조 페이지 https://stackoverflow.com/questions/426731

 

 

반응형

댓글