SQL 문의 실행 순서
MySQL 문은 아래 그림과 같이 총 11단계로 나누어지며, 항상 FROM 연산이 먼저 실행되고, LIMIT 연산이 마지막에 실행됩니다. 각 작업은 처리를 위한 입력으로 사용되는 가상 테이블을 생성합니다. 그러나 이러한 가상 테이블은 사용자에게 투명하지만 결과로 마지막 가상 테이블만 반환됩니다. 문에 절이 지정되지 않은 경우 해당 단계를 건너뜁니다.
질의 처리의 각 단계를 자세히 분석해 보겠습니다
FORM: FROM의 왼쪽 테이블과 오른쪽 테이블의 데카르트 곱을 계산합니다. 가상 테이블 VT1 생성
ON: 가상 테이블 VT1에 대해 ON 필터링을 수행하고
JOIN: OUTER JOIN(예: 왼쪽 조인, 오른쪽 조인)이 지정되면 유지된 테이블의 일치하지 않는 행이 가상 테이블 VT2에 외부 행으로 추가되어 가상 테이블 VT3에 두 개의 If가 포함됩니다. 테이블이 두 개 이상인 경우 모든 테이블이 처리될 때까지 이전 조인 연결에서 생성된 결과 VT3과 다음 테이블에 대해 1~3단계가 반복됩니다.
WHERE: 가상 테이블 VT3 WHERE 조건 필터링을 수행합니다.
GROUP BY: group by 절의 열에 따라 VT4의 레코드를 그룹화하여 VT5를 생성합니다.
CUBE | ROLLUP: 테이블 VT5에서 큐브 또는 롤업 작업을 수행하여 테이블 VT6을 생성합니다.
HAVING: 오른쪽 가상 테이블 VT6 필터링을 적용하고
SELECT: 선택 작업을 수행하고 지정된 열을 선택하여 가상 테이블 VT8에 삽입합니다.
DISTINCT: VT8에서 중복 레코드를 제거합니다. 가상 테이블 VT9을 생성합니다.
ORDER BY: 가상 테이블 VT9의 레코드를
LIMIT: 지정된 행의 레코드를 꺼내고 가상 테이블 VT11을 생성한 후 반환합니다. 결과 .
Writing order: select... from... where.... group by... had... order by... 제한 [offset,]
(rows)
Execution order :from... where...group by... 가지고.... 선택... order by... 제한
위 내용은 SQL 실행 순서는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!