MySQL 쿼리 성능 예외: IN 연산자와 등호 연산자의 성능 차이
문제 설명
MySQL에서 IN 조건을 사용하는 SELECT 쿼리의 성능은 등호(=) 연산자를 사용하는 동일한 쿼리보다 훨씬 낮습니다. IN 조건에 단일 값만 포함되어 있어도 성능 차이가 클 수 있습니다.
설명
이 문제는 MySQL 5.6.x에서 수정된 MySQL의 최적화 결함으로 인해 발생합니다. 이 문제는 IN 조건이 포함된 하위 쿼리가 독립 하위 쿼리가 아닌 종속 하위 쿼리로 잘못 분류된 경우 발생합니다.
종속 하위 쿼리와 독립 하위 쿼리
샘플 쿼리 분석
다음 예제 쿼리는 이러한 예외를 보여줍니다.
<code class="language-sql">SELECT * FROM question_law_version WHERE id IN ( SELECT MAX(foo_id) FROM bar )</code>
이 쿼리를 실행하면 하위 쿼리가 종속 하위 쿼리로 처리되어 성능이 저하됩니다. 그러나 IN을 =로 바꾸면 종속성이 제거되고 성능이 크게 향상됩니다.
쿼리 계획 비교
EXPLAIN 명령을 사용하여 쿼리 계획을 검사하면 차이점이 드러납니다.
= 연산자를 사용하는 쿼리 계획에는 "종속 하위 쿼리"가 없다는 점에 유의하세요.
위 내용은 단일 값을 사용하더라도 MySQL의 `IN` 연산자가 `=`보다 느린 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!