결과가 1개뿐이라는 것을 알면 MySQL 쿼리에 'LIMIT 1'을 추가하면 쿼리가 더 빨라지나요?

StackOverflow https://stackoverflow.com/questions/455476

  •  19-08-2019
  •  | 
  •  

문제

MySQL 쿼리에 LIMIT 1을 추가하면 1개의 결과를 찾은 후 검색이 중지됩니까(따라서 속도가 빨라지나요?) 아니면 여전히 모든 결과를 가져오고 끝에서 잘리나요?

도움이 되었습니까?

해결책

쿼리에 따라 제한 절을 추가하면 성능에 큰 영향을 미칠 수 있습니다.하나의 행만 원하고(또는 하나의 행만 쿼리를 충족할 수 있다는 사실을 알고 있음) 내부 최적화 프로그램이 이를 어떻게 실행할지 확실하지 않은 경우(예: WHERE 절이 인덱스에 도달하지 않는 등) 반드시 LIMIT 절을 추가해야 합니다.

최적화된 쿼리(작은 테이블에서 인덱스 사용)의 경우 성능에 큰 영향을 미치지 않을 수 있지만 다시 한 번 말하지만 한 행에만 관심이 있는 경우에는 상관없이 LIMIT 절을 추가하는 것보다 좋습니다.

다른 팁

한계는 쿼리의 성능에 영향을 줄 수 있으며 (아래 주석 및 아래 링크 참조) MySQL에서 출력되는 결과 세트도 줄어 듭니다. 단일 결과를 기대하는 쿼리의 경우 이점이 있습니다.

또한 결과 세트를 제한하면 실제로 큰 결과 세트를 전송함에 따라 총 쿼리 시간 속도가 빨라질 수 있습니다. 메모리를 사용하고 디스크에서 임시 테이블을 생성 할 수 있습니다. 최근에 한계를 사용하지 않는 응용 프로그램을 보았을 때 큰 결과 세트로 인해 서버를 죽이는 애플리케이션을 보았고 리소스 활용도가 엄청나게 떨어졌습니다.

자세한 내용은이 페이지를 확인하십시오. MySQL 문서 : 최적화 제한

다시 돌아 오는 결과 만 있으면 한계가 더 빨라지지 않습니다. 결과가 많고 첫 번째 결과 만 필요하고 명령문 별 그룹이나 주문이 없으면 한계가 더 빨라집니다.

간단히 말해서 대답은 예입니다. 결과를 1로 제한하면 한 가지 결과를 "예상"하더라도 데이터베이스가 모든 레코드를 살펴 보지 않기 때문에 쿼리가 더 빠릅니다. 쿼리와 일치하는 레코드를 찾으면 단순히 중지됩니다.

하나의 단일 결과만을 기대하면 쿼리에 한도를 추가하는 것이 합리적입니다. 나는 MySQL의 내부 작업을 모르지만, 나는 그것이 100'000+ 레코드의 결과 세트를 수집하지 않을 것이라고 확신한다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top