>  기사  >  데이터 베이스  >  SQL 실행 순서는 무엇입니까?

SQL 실행 순서는 무엇입니까?

silencement
silencement원래의
2019-06-10 10:36:3429504검색

SQL 실행 순서는 무엇입니까?

SQL 문의 실행 순서

MySQL 문은 아래 그림과 같이 총 11단계로 나누어지며, 항상 FROM 연산이 먼저 실행되고, LIMIT 연산이 마지막에 실행됩니다. 각 작업은 처리를 위한 입력으로 사용되는 가상 테이블을 생성합니다. 그러나 이러한 가상 테이블은 사용자에게 투명하지만 결과로 마지막 가상 테이블만 반환됩니다. 문에 절이 지정되지 않은 경우 해당 단계를 건너뜁니다.

질의 처리의 각 단계를 자세히 분석해 보겠습니다

FORM: FROM의 왼쪽 테이블과 오른쪽 테이블의 데카르트 곱을 계산합니다. 가상 테이블 VT1 생성

ON: 가상 테이블 VT1에 대해 ON 필터링을 수행하고 을 만족하는 행만 가상 테이블 VT2에 기록됩니다.

JOIN: OUTER JOIN(예: 왼쪽 조인, 오른쪽 조인)이 지정되면 유지된 테이블의 일치하지 않는 행이 가상 테이블 VT2에 외부 행으로 추가되어 가상 테이블 VT3에 두 개의 If가 포함됩니다. 테이블이 두 개 이상인 경우 모든 테이블이 처리될 때까지 이전 조인 연결에서 생성된 결과 VT3과 다음 테이블에 대해 1~3단계가 반복됩니다.

WHERE: 가상 테이블 VT3 WHERE 조건 필터링을 수행합니다. 을 충족하는 레코드만 가상 테이블 VT4에 삽입됩니다.

GROUP BY: group by 절의 열에 따라 VT4의 레코드를 그룹화하여 VT5를 생성합니다.

CUBE | ROLLUP: 테이블 VT5에서 큐브 또는 롤업 작업을 수행하여 테이블 VT6을 생성합니다.

HAVING: 오른쪽 가상 테이블 VT6 필터링을 적용하고 을 만족하는 레코드만 가상 테이블 VT7에 삽입됩니다.

SELECT: 선택 작업을 수행하고 지정된 열을 선택하여 가상 테이블 VT8에 삽입합니다.

DISTINCT: VT8에서 중복 레코드를 제거합니다. 가상 테이블 VT9을 생성합니다.

ORDER BY: 가상 테이블 VT9의 레코드를 에 따라 정렬하여 가상 테이블 VT10을 생성합니다.

LIMIT: 지정된 행의 레코드를 꺼내고 가상 테이블 VT11을 생성한 후 반환합니다. 결과 .

Writing order: select... from... where.... group by... had... order by... 제한 [offset,]

(rows)

Execution order :from... where...group by... 가지고.... 선택... order by... 제한

위 내용은 SQL 실행 순서는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.