Loading...
MySQL 9.5 Reference Manual 9.5의 10.2.2 Optimizing Subqueries, Derived Tables, View References, and Common Table Expressions의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
10.2.2.1 Optimizing IN and EXISTS Subquery Predicates with Semijoin and Antijoin Transformations
10.2.2.2 Optimizing Subqueries with Materialization
10.2.2.3 Optimizing Subqueries with the EXISTS Strategy
10.2.2.4 Optimizing Derived Tables, View References, and Common Table Expressions with Merging or Materialization
10.2.2.5 Derived Condition Pushdown Optimization
10.2.2.6 Optimizing ANY and ALL Subqueries
MySQL 쿼리 옵티마이저는 서브쿼리를 평가하기 위해 사용할 수 있는 다양한 전략을 제공합니다:
IN, = ANY 또는
EXISTS 프레디킷과 함께 사용되는 서브쿼리의 경우, 옵티마이저는 다음과 같은 선택지를 가집니다:
세미조인
머티리얼라이제이션
EXISTS 전략
NOT IN, <> ALL 또는
NOT EXISTS 프레디킷과 함께 사용되는 서브쿼리의 경우, 옵티마이저는 다음과 같은 선택지를 가집니다:
머티리얼라이제이션
EXISTS 전략
파생 테이블의 경우, 옵티마이저는 다음과 같은 선택지를 가집니다(이는 뷰 참조 및 공통 테이블 식에도 동일하게 적용됩니다):
파생 테이블을 외부 쿼리 블록과 머지
파생 테이블을 내부 임시 테이블로 머티리얼라이즈
다음 논의에서는 앞에서 언급한 최적화 전략들에 대한 더 많은 정보를 제공합니다.
참고
단일 테이블을 수정하기 위해 서브쿼리를 사용하는
UPDATE 및
DELETE 문에 대한 한계는,
옵티마이저가 세미조인 또는 머티리얼라이제이션 서브쿼리 최적화를 사용하지 않는다는 점입니다.
우회 방법으로, 이들을 서브쿼리 대신 조인을 사용하는 다중 테이블
UPDATE 및
DELETE 문으로 다시 작성하는 것을 시도하십시오.
10.2.1 Optimizing SELECT Statements
10.2.3 Optimizing INFORMATION_SCHEMA Queries