반응형
다음 쿼리 중 더 나은 방법을 고려할 수있는 방법은 무엇입니까? 당신의 이유는 무엇입니까 (코드 효율성, 더 나은 유지 보수성, 덜 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
반응형
'MySql' 카테고리의 다른 글
MySQL Workbench가 키 체인에 비밀번호를 저장하지 않음 (0) | 2020.10.27 |
---|---|
MySQL SQL 그룹 별 대 구별 (0) | 2020.10.27 |
MySQL 단일 행에서 여러 열의 AVG를 선택하는 방법 (0) | 2020.10.27 |
MySQL PHP에서 MySQL 외래 키 제약 조건 무시 (0) | 2020.10.27 |
MySQL Ruby on Rails ActiveRecord의 순서 및 정렬 기준 차이 (0) | 2020.10.27 |
댓글