MySQL 쿼리에 LIMIT 1을 추가하면 1 개의 결과를 찾은 후 검색이 중지됩니까 (따라서 더 빨라짐)? 아니면 여전히 모든 결과를 가져오고 끝에서 잘립니다.
답변:
쿼리에 따라 제한 절을 추가하면 성능에 큰 영향을 미칠 수 있습니다. 하나의 행만 원하고 (또는 하나의 행만 쿼리를 충족 할 수 있다는 사실을 알고 있음) 내부 최적화 프로그램이이를 실행하는 방법에 대해 확신하지 못하는 경우 (예 : WHERE 절이 인덱스에 부딪히지 않는 등) 확실히 LIMIT 절을 추가해야합니다.
최적화 된 쿼리 (작은 테이블의 인덱스 사용)의 경우 성능면에서는 그다지 중요하지 않지만 LIMIT 절을 추가하는 것보다 한 행에만 관심이있는 경우에도 마찬가지입니다.
제한은 쿼리의 성능에 영향을 미칠 수 있으며 (아래 주석 및 링크 참조) MySQL에서 출력하는 결과 집합도 감소합니다. 단일 결과를 기대하는 쿼리의 경우 이점이 있습니다.
또한 결과 집합을 제한하면 실제로 큰 결과 집합을 전송하면 메모리를 사용하고 잠재적으로 디스크에 임시 테이블을 만들 수 있으므로 총 쿼리 시간을 단축 할 수 있습니다. 최근에 한계를 사용하지 않은 애플리케이션이 엄청난 결과 세트로 인해 서버를 죽이고 한계가있는 경우 리소스 사용률이 엄청나게 감소하는 것을 보았 기 때문에 이것을 언급했습니다.
자세한 내용은이 페이지를 확인하십시오. MySQL 문서 : LIMIT 최적화
돌아 오는 결과가 1 개뿐이면 아니요, LIMIT로 인해 더 빨리 처리되지 않습니다. 많은 결과가 있고 첫 번째 결과 만 필요하고 GROUP 또는 ORDER by 문이없는 경우 LIMIT가 더 빠르게 만듭니다.
간단히 말해 대답은 '예'입니다. 결과를 1로 제한하면 하나의 결과를 "예상"하는 경우에도 데이터베이스가 모든 레코드를 조사하지 않기 때문에 쿼리가 더 빨라집니다. 쿼리와 일치하는 레코드를 찾으면 단순히 중지됩니다.
UNIQUE
(또는PRIMARY KEY
) 제약 조건 (또는 인덱스)이있는 경우에는 해당되지 않습니다 . stackoverflow.com/questions/8467092/…