SQLServer 2008 기술 내막 - T - SQL 조회 노트
2. SQLServer 에서 실제 작업 계획 (실행 계획) 을 생 성 하 는 구성 요 소 는 검색 최적화 기 (query optimizer) 입 니 다.결과 집합 이 정확 하 다 는 전제 하에 서 만 최적화 기 는 지름길 로 갈 수 있다.조회 의 논리 적 처리 와 물리 적 처 리 를 명확 하 게 구분 하 는 것 은 매우 중요 하 다.
3. 논리 조회 의 각 단계:
(5) SELECT (5-2) DISTINCT (5-3) TOP () (5-1)
(1) FROM (1-J) JOIN ON
|(1-A) APPLY AS
|(1-P) PIVOT () AS
|(1-U) UNPIVOT () AS
(2) WHERE
(3) GROUP BY
(4) HAVING
(6) ORDER BY ;
첫 번 째 단계: FROM: 검색 의 소스 표를 표시 합 니 다. 연결 연산 에서 관련 된 단 계 는 (1 - J1) 피리 카드 축적, (1 - J2) ON 필터 와 (1 - J3) 외부 줄 추가 입 니 다.가상 테이블 VT1 을 생 성 합 니 다.
1.1. 피리 카드 축적: 두 표 는 피리 카드 축적 을 실행 하고 가상 표 VT1 - J1 을 생 성 한다.
1.2, ON 필터: VT1 - J1 에서 ON 을 true 로 만족 시 키 는 줄 에 VT1 - J2 를 삽입 합 니 다.
1.3. 외부 줄 추가: OUTER JOIN (CROSS JOIN 또는 INNER JOIN 에 비해) 을 지정 하면 표 에 일치 하 는 줄 이 없 는 것 을 유지 하고 외부 줄 로 추가 하여 VT1 - J3 를 생 성 합 니 다.
두 번 째 단계: WHERE: WHERE 자구 의 술어 에 따라 VT1 의 데 이 터 를 줄 로 선별 하고 결과 가 TRUE 인 줄 에 만 VT2 를 삽입 합 니 다.
세 번 째 단계: GROUP BY: group by 의 목록 에 따라 VT2 를 그룹 으로 나 누고 각 그룹 은 하나의 결과 줄 만 있 으 며 VT3 를 생 성 합 니 다.
STEP 4: HAVING: HAVING 에 나타 난 술어 에 따라 VT3 김 신 을 선별 하여 결과 가 TRUE 인 그룹 에 만 VT4 를 삽입 합 니 다.
STEP 5: SELECT: SELECT 자구 의 요 소 를 처리 하여 VT5 를 생 성 합 니 다.
5.1. 계산 식: SELECT 목록 의 표현 식 에 따라 VT5 - 1 을 생 성 합 니 다.
5.2, DISTINCT: VT5 - 1 에서 중복 되 는 줄 을 삭제 하고 VT5 - 2 를 생 성 합 니 다.
5.3. TOP: ORDER BY 자구 정의 논리 에 따라 정렬 하고 VT5 - 2 에서 앞에서 지정 한 수량 이나 백분율 의 줄 을 선택 하여 VT5 - 3 을 생산 합 니 다.
STEP 6: ORDER BY: ORDER BY 자구 에서 지정 한 열 이름 에 따라 VT5 - 3 을 정렬 합 니 다.커서 VC6 생 성.
3 값 논리:
a. 모든 조회 필터 (ON, WHERE, HAVING) 는 null 을 FALSE 로 처리 합 니 다.
b. check 제약 조건 의 null 값 은 TRUE 로 취급 합 니 다.
c. UNIQUE 제약, 집합 연산 (UNION 과 EXCEPT), 정렬 과 그룹 작업 은 두 null 이 같다 고 생각 합 니 다.
주의:
1. FROM 자구 에 표 연산 자가 여러 개 있 으 면 왼쪽 에서 오른쪽으로 순서대로 처리한다.각 표 연산 자의 결 과 는 다음 표 연산 자의 왼쪽 입력 으로 마지막 으로 가상 표를 다음 단계 의 입력 으로 생 성 합 니 다.
2. WHERE 이전에 데이터 그룹 을 나 누 지 않 았 기 때문에 WHERE 자 구 는 취 합 을 사용 할 수 없습니다.필터 에서 ON 이 보존 표 의 일부 줄 을 삭제 하 는 것 은 최종 적 인 것 이 아니 라 WHERE 가 최종 적 인 것 입 니 다.외부 연결 을 사용 할 때 만 ON 과 WHERE 가 논리 적 으로 구별 된다.
3. 조회 에서 GROUP BY 를 지정 하면 후속 모든 절 차 는 지 정 된 그룹 에서 만 작 동 할 수 있 습 니 다.
4. HAVING 은 그룹 데이터 에 사용 할 수 있 는 유일한 필터 입 니 다.
5. SQL 은 여러 개의 연산 을 동시에 계산 (all - at - once operation) 하기 때문에 SELECT 문장의 논리 적 순 서 는 무관 합 니 다.
6. ORDER BY 는 SELECT 의 별명 을 사용 할 수 있 는 유일한 절차 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.