내가이 쿼리가 :하위 쿼리가있는이 SQL 쿼리의 속도가 느린 이유는 무엇입니까?
select *
from transaction_batch
where id IN
(
select MAX(id) as id
from transaction_batch
where status_id IN (1,2)
group by status_id
);
는 내부 쿼리가 매우 빠르게 (0.1 초)을 실행하는 두 개의 ID 년대, 상태 1 일, 상태 2를 얻을 수를, 다음은 기본 키에 따라 선택됩니다 그것 때문에 색인이 생성됩니다. Explain 질의는 135K 행을 어디에서 사용하고 있는지를 찾고 있으며, 내 인생에서 왜 그렇게 느린 지 알 수 없다고합니다.
MySQL은 하위 쿼리를 최적화하는 것에 대해 꽤 바보입니다. 그래서 느립니다. 그것을 향상시키는 유일한 방법은 JOIN (RedFilter에 표시된 것처럼)으로 다시 쓰는 것입니다. –