MySQL 쿼리에 'LIMIT 1'을 추가하면 결과가 1 개뿐이라는 것을 알고있을 때 쿼리가 더 빨라 집니까?
MySQL 쿼리에 LIMIT 1을 추가하면 1 개의 결과를 찾은 후 검색이 중지됩니까 (따라서 더 빨라짐), 아니면 여전히 모든 결과를 가져오고 끝에서 잘립니까?
쿼리에 따라 제한 절을 추가하면 성능에 큰 영향을 미칠 수 있습니다. 하나의 행만 원하고 (또는 하나의 행만 쿼리를 충족 할 수 있다는 사실을 알고 있음) 내부 최적화 프로그램이이를 실행하는 방법에 대해 확신하지 못하는 경우 (예 : WHERE 절이 인덱스에 부딪히지 않는 등) 확실히 LIMIT 절을 추가해야합니다.
최적화 된 쿼리 (작은 테이블의 인덱스 사용)의 경우 성능면에서는 그다지 중요하지 않지만 LIMIT 절을 추가하는 것보다 하나의 행에만 관심이 있다면 다시 말하십시오.
제한은 쿼리의 성능에 영향을 미칠 수 있으며 (아래 주석 및 링크 참조) MySQL에서 출력하는 결과 집합도 감소합니다. 단일 결과를 기대하는 쿼리의 경우 이점이 있습니다.
또한 결과 집합을 제한하면 실제로 큰 결과 집합을 전송하면 메모리를 사용하고 잠재적으로 디스크에 임시 테이블을 만들 수 있으므로 총 쿼리 시간을 단축 할 수 있습니다. 최근에 한계를 사용하지 않는 애플리케이션이 엄청난 결과 세트로 인해 서버를 죽이고 한계가있는 경우 리소스 사용률이 엄청나게 감소하는 것을 보았 기 때문에 이것을 언급했습니다.
자세한 내용은이 페이지를 확인하십시오. MySQL 문서 : LIMIT 최적화
돌아 오는 결과가 1 개뿐이면 아니요, LIMIT는 더 이상 더 빠르게 만들지 않습니다. 많은 결과가 있고 첫 번째 결과 만 필요하고 GROUP 또는 ORDER by 문이없는 경우 LIMIT가 더 빠르게 만듭니다.
간단히 말해서 대답은 '예'입니다. 결과를 1로 제한하면 하나의 결과를 "예상"하는 경우에도 데이터베이스가 모든 레코드를 조사하지 않기 때문에 쿼리가 더 빨라집니다. 쿼리와 일치하는 레코드를 찾으면 단순히 중지됩니다.
실제로 하나의 결과 만 기대한다면 쿼리에 LIMIT를 추가하는 것이 좋습니다. 나는 MySQL의 내부 작동 방식을 모르지만, 끝에서 1로 다시 자르기 위해 100'000 개 이상의 레코드 결과 집합을 수집하지 않을 것이라고 확신합니다 ..
'code' 카테고리의 다른 글
Android Studio : 기본 프로젝트 디렉토리 (0) | 2020.10.08 |
---|---|
정적 초기화 프로그램에서 람다가있는 병렬 스트림이 교착 상태를 일으키는 이유는 무엇입니까? (0) | 2020.10.08 |
OutputStream에서 InputStream을 생성하는 가장 효율적인 방법 (0) | 2020.10.08 |
ASP.Net의 dll.refresh 파일은 무엇입니까? (0) | 2020.10.08 |
클래스 내부 또는 외부의 함수 선언 (0) | 2020.10.08 |