이 글의 내용은 MySQL에서의 문장 실행 순서와 쿼리 처리 단계의 분석에 관한 내용으로, 참고할만한 내용이 있으니 도움이 필요한 분들에게 도움이 되었으면 좋겠습니다.
MySQL 문은 아래 그림과 같이 총 11단계로 구분됩니다. 항상 FROM 연산이 먼저 실행되고 LIMIT 연산이 마지막에 실행됩니다. 각 작업은 처리를 위한 입력으로 사용되는 가상 테이블을 생성합니다. 그러나 이러한 가상 테이블은 사용자에게 투명하지만 결과로 마지막 가상 테이블만 반환됩니다. 문에 해당 작업이 지정되지 않은 경우 해당 단계를 건너뜁니다.
(7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_type> JOIN <right_table> (2) ON <join_condition> (4) WHERE <where_condition> (5) GROUP BY <group_by_list> (6) HAVING <having_condition> (9) ORDER BY <order_by_condition> (10) LIMIT <limit_number>
질의 처리의 각 단계를 자세히 분석해 보겠습니다
1. FORM: FROM의 왼쪽 테이블과 오른쪽 테이블의 데카르트 곱을 계산합니다. 가상 테이블 VT1
2, ON 생성: 가상 테이블 VT1에 대해 ON 필터링을 수행하고 bf9b4c48950c937d4fa97667a2821c6b을 충족하는 행만 가상 테이블 VT2에 기록됩니다.
3. OUTER JOIN(예: 왼쪽 조인, 오른쪽 조인)을 지정하면 예약된 테이블의 일치하지 않는 행이 가상 테이블 VT2에 외부 행으로 추가되어 가상 테이블 VT3이 생성됩니다. sub- 문장에 테이블이 2개 이상 포함된 경우 모든 테이블이 처리될 때까지 이전 조인 연결에서 생성된 결과 VT3과 다음 테이블에 대해 1~3단계가 반복됩니다.
4. WHERE: 가상 테이블 VT3에서 WHERE 조건 필터링을 수행합니다. 37023308e307efd5f0e857faeb928224을 충족하는 레코드만 가상 테이블 VT4에 삽입됩니다.
5. GROUP BY: VT5를 생성하기 위해 group by 절의 열에 따라 VT4의 레코드를 그룹화합니다.
6: CUBE | ROLLUP: 테이블 VT6을 생성합니다.
7, HAVING: 가상 테이블 VT6에 has 필터를 적용합니다. 724e941dbbeb0d52a1b0c6707f0711c2을 충족하는 레코드만 가상 테이블 VT7에 삽입됩니다.
8. SELECT: 선택 작업을 수행하고 지정된 열을 선택하여 가상 테이블 VT8에 삽입합니다.
9. DISTINCT: VT8에서 레코드 중복을 제거합니다. 가상 테이블 VT9 생성.
10, ORDER BY: 660e01dadb9fb9cdda303aa6c4f5bf4f에 따라 가상 테이블 VT9의 레코드를 정렬하여 가상 테이블 VT10을 생성합니다.
11, LIMIT: 지정된 행의 레코드를 꺼내고 가상 테이블 VT11을 생성하고 결과를 반환합니다.
관련 권장 사항:mysql에서 utf8과 utf8mb4의 차이점은 무엇입니까?
mysql에서 group_conca 함수의 길이 제한을 수정하는 방법
mysql 대형 테이블에서 count() 사용 및 mysql에서 count() 최적화위 내용은 mysql의 문장 실행 순서와 질의 처리 단계 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!