2012-09-11 2 views
9

나는 correlated subqueries을 할 수 있으며 가입 할 수 있습니다. 그러나 어느 것이 더 빠릅니까? 황금률 규칙이 있습니까 아니면 둘 다 측정해야합니까?더 빠른 것은 상관 관계가있는 서브 쿼리입니까?

+1

쿼리에 따라 측정해야합니다. 귀하의 데이터, 크기, 스키마에 따라 다릅니다. 즉, 황금률은 없습니다. – Cfreak

+0

@Cfreak - 답변으로 추가하십시오. 올바른 것입니다. – RQDQ

답변

16

먼저 상관 된 하위 쿼리는 실제로 조인 유형입니다. 최고의 실행 계획을 세우는 황금률은 없습니다. 실적에 관심이있는 경우 다른 양식을 사용해 가장 효과가 좋은 것을 확인해야합니다. 또는 적어도, 그 결정을 내리는 exeuction 계획을보십시오.

일반적으로 두 가지 이유로 상관 관계가있는 하위 쿼리를 피하는 경향이 있습니다. 첫째, 거의 항상 상관 관계없이 작성 될 수 있습니다. 둘째, 많은 쿼리 엔진이 중첩 루프 조인 (인덱스 사용)으로 전환하고 다른 조인 전략이 더 좋을 수 있습니다. 이러한 경우 상관 관계가있는 하위 쿼리는 쿼리를 병렬화하기 어렵게 만듭니다. 셋째, 상관 관계가있는 부질의는 보통 SELECT 절 또는 WHERE 절에있다. 모든 테이블이 FROM 절에 있어야합니다.

그러나 MySQL에서는 상관 하위 쿼리가 종종 개의 쿼리를 효율적으로 수행합니다. IN 절에서 하위 쿼리를 사용하는 경우 특히 그렇습니다. 그래서 황금률은 없습니다.

관련 문제