다른 회사에서 상속 한 응용 프로그램의 느린 섹션을 리팩터링하여 다음과 같은 하위 쿼리 대신 내부 조인을 사용했습니다.
WHERE id IN (SELECT id FROM ...)
리팩토링 된 쿼리는 약 100 배 빠르게 실행됩니다. (~ 50 초 ~ ~ 0.3) 개선이 필요했지만 왜 그렇게 과감했는지 설명 할 수 있습니까? where 절에 사용 된 열은 모두 색인화되었습니다. SQL은 where 절에서 행마다 한 번씩 쿼리를 실행합니까?
업데이트 -결과 설명 :
차이점은 "where id in ()"쿼리의 두 번째 부분에 있습니다.
2 DEPENDENT SUBQUERY submission_tags ref st_tag_id st_tag_id 4 const 2966 Using where
조인이있는 1 개의 색인 행 :
SIMPLE s eq_ref PRIMARY PRIMARY 4 newsladder_production.st.submission_id 1 Using index