[SQL] 하위 쿼리와 상관 하위 쿼리의 차이
SQL하위 쿼리와 상관 하위 쿼리의 차이
SQL 쿼리의 다음 조각은 정상적인 쿼리 또는 상관 하위 쿼리인가?
SELECT UserID,
FirstName,
LastName,
DOB,
GFName,
GLName,
LoginName,
LoginEffectiveDate,
LoginExpiryDate,
Password,
Email,
ReportingTo,
Mobile,
CommunicationPreference,
IsActive
FROM (SELECT row_number() OVER (ORDER BY FirstName) AS Row,
UserID,
FirstName,
LastName,
DOB,
GFName,
GLName,
LoginName,
LoginEffectiveDate,
LoginExpiryDate,
Password,
Email,
ReportingTo,
Mobile,
CommunicationPreference,
IsActive
FROM DivakarUserRegistration) T
또한, 캔 누군가 상태 양자의 차이점
해결법
-
==============================
1.상관 된 하위 쿼리는 외부 쿼리의 값을 사용하는 서브 쿼리이다. 이 경우 내부 질의는 외부 쿼리의 모든 행에 대해 실행되어야한다.
상관 된 하위 쿼리는 외부 쿼리의 값을 사용하는 서브 쿼리이다. 이 경우 내부 질의는 외부 쿼리의 모든 행에 대해 실행되어야한다.
여기 http://en.wikipedia.org/wiki/Correlated_subquery 예를 참조하십시오
간단한 하위 쿼리는 외부 쿼리의 값을 사용하지 않는 한 번만 계산하고 있습니다 :
SELECT id, first_name FROM student_details WHERE id IN (SELECT student_id FROM student_subjects WHERE subject= 'Science');
상관 하위 쿼리 예 -
급여 모든 직원을 찾으려면 쿼리는 부서의 평균 이상이다
SELECT employee_number, name FROM employees emp WHERE salary > ( SELECT AVG(salary) FROM employees WHERE department = emp.department);
-
==============================
2.위의 예는 공동 관련된 하위 쿼리가 아닙니다. 그것은 즉, FROM 절 안에 하위 쿼리 이후 테이블 / 인라인 뷰를 파생한다.
위의 예는 공동 관련된 하위 쿼리가 아닙니다. 그것은 즉, FROM 절 안에 하위 쿼리 이후 테이블 / 인라인 뷰를 파생한다.
상관 하위 쿼리가에서 부모 (주 쿼리) 표를 참조해야합니다. 예를 들어 참조 주식 관련 하위의 요청에 의한 N 번째 최대 급여를 찾을 수 있습니다 :
SELECT Salary FROM Employee E1 WHERE N-1 = (SELECT COUNT(*) FROM Employee E2 WHERE E1.salary <E2.Salary)
상관 대 중첩 된 서브 쿼리.
일반 하위 쿼리와 상관 하위 쿼리 간의 기술 차이가 있습니다 :
1. 루핑 : 메인 쿼리에서 공동 관련 하위 쿼리 루프; 반면 중첩되지; 메인 질의를 반복 할 때마다에 따라서 공동 관련 서브 쿼리 실행한다. 중첩 된 쿼리의 경우, 반면; 하위 쿼리가 실행이 먼저 외부 쿼리는 다음 실행합니다. 따라서, 최대 없음. 이 실행의 서브 쿼리에 대한 상관에 대한 N × M 개의 서브 쿼리 및 N + M이다.
2. 종속성 (외부 대 내부에 외부에 내부) : 정상 부질에서 외부 쿼리는 쿼리에 따라 내측 공동 반면 관련 서브 쿼리의 경우, 내부 쿼리 처리 외부 쿼리에 의존한다.
3.Performance : 그것을 대신 N + M 반복하여 N × M의 반복을 수행 이후 주식 관련 서브 쿼리 성능을 사용하면 감소한다. ¨ 하위 쿼리 실행을 공동 관련.
예제와 함께 자세한 내용은 :
http://dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-Sql-Sub-Queries-Nested-Co-related.html
-
==============================
3.상관 하위 쿼리는 : 메인 쿼리에 의해 처리 된 각 행에 대해 평가됩니다. 값이 외부 쿼리에 의해 페치에 따라 내부 쿼리를 실행합니다. 메인 쿼리에 의해 반환 된 모든 값이 일치 할 때까지 계속합니다. 내부 쿼리는 외부 쿼리에 의해 구동
상관 하위 쿼리는 : 메인 쿼리에 의해 처리 된 각 행에 대해 평가됩니다. 값이 외부 쿼리에 의해 페치에 따라 내부 쿼리를 실행합니다. 메인 쿼리에 의해 반환 된 모든 값이 일치 할 때까지 계속합니다. 내부 쿼리는 외부 쿼리에 의해 구동
전의:
(EMP WHERE deptid = e.deptid FROM SELECT AVG (SAL)) SELECT EMPNO, FNAME 샐, EMP WHERE SAL E = FROM deptid
상관 부질 특히 각 부서의 AVG (SAL)을 계산한다.
하위 쿼리 : 한 번 실행 먼저 실행, 반환 값은 메인 쿼리에 의해 사용된다. 외부 쿼리는 내부 쿼리에 의해 구동
-
==============================
4.서브 쿼리는 다른 선택 문의 절에 포함 된 선택 문입니다.
서브 쿼리는 다른 선택 문의 절에 포함 된 선택 문입니다.
전의:
select ename, sal from emp where sal > (select sal from emp where ename ='FORD');
상관 부질 외부 쿼리 또는 쿼리 메인 처리의 각 행에 대해 한 번 계산된다 부질이다. 값이 모든 주요 쿼리에 의해 반환 된 값이 일치하는 외부 쿼리에 의해 페치에 따라 내부 쿼리를 실행합니다. 내부 쿼리는 외부 쿼리에 의해 구동된다.
전의:
select empno,sal,deptid from emp e where sal=(select avg(sal) from emp where deptid=e.deptid);
차
내부 질의는 먼저 실행하고 값 내측 쿼리의 값을 사용하여 한번 외부 쿼리 실행한다 (부질)을 발견
(상관 관계) 자격 또는 외부 조회를 실격 내부 쿼리의 결과 값을 사용하여, 외측 쿼리 페치 외부 쿼리의 값을 이용하여 내부 쿼리를 실행할
자세한 내용은 : http://www.oraclegeneration.com/2014/01/sql-interview-questions.html
-
==============================
5.이 부질 공동 관련 검색어에 관해서 내부 쿼리와의 유일한 차이는 주식 관련 내부 쿼리 반면 외부 쿼리에 의존하지 않는 내부 쿼리 외측에 따라 서브 쿼리에 쿼리 외측이 모두.
이 부질 공동 관련 검색어에 관해서 내부 쿼리와의 유일한 차이는 주식 관련 내부 쿼리 반면 외부 쿼리에 의존하지 않는 내부 쿼리 외측에 따라 서브 쿼리에 쿼리 외측이 모두.
-
==============================
6.내가 당신에게 도움이 될 것입니다 설명 아래 생각 .. 그 사이의 차별화 : 상관 부질 메인 쿼리 (질의 외측) excuted 반복되는 것으로 간주되도록 내측 쿼리 참조 내측 쿼리이다.
내가 당신에게 도움이 될 것입니다 설명 아래 생각 .. 그 사이의 차별화 : 상관 부질 메인 쿼리 (질의 외측) excuted 반복되는 것으로 간주되도록 내측 쿼리 참조 내측 쿼리이다.
비 상관 하위 쿼리는 외부 쿼리의 독립적 인 서브 쿼리이며 주요 외부 쿼리에 의존하지 않고 그 자체에서 실행 할 수 있습니다.
일반 하위 쿼리는 외부 쿼리에 의존하지 않는다
-
==============================
7.SQL 쿼리에있어서, 상기 내부 쿼리 외부 쿼리의 모든 행에 대해 실행하는 경우. 외부의 요청에 의한 내부 쿼리가 한번 실행되고, 그 결과가 소비되는 경우, 그것은 비 협력 관련 검색어로 불린다.
SQL 쿼리에있어서, 상기 내부 쿼리 외부 쿼리의 모든 행에 대해 실행하는 경우. 외부의 요청에 의한 내부 쿼리가 한번 실행되고, 그 결과가 소비되는 경우, 그것은 비 협력 관련 검색어로 불린다.
일반적으로 통상의 상관에 대응하는 서브 쿼리는 쿼리, 즉 어떠한 서브 쿼리가없는 쿼리를 조인하고 일반적으로 다음과 같이 표현 될 수있다. 같은 쿼리를 조인으로 대부분의 SQL DBMS에이를 실행할 때문에 때로는 그들이 번역하는 것이 좋습니다 .....
from https://stackoverflow.com/questions/17268848/difference-between-subquery-and-correlated-subquery by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 단정를 사용하는 경우 연결을 닫기 (0) | 2020.04.30 |
---|---|
[SQL] MySQL의 : 등에 의해 주문? (0) | 2020.04.30 |
[SQL] MySQL은 Case 문 (0) | 2020.04.30 |
[SQL] VARCHAR와 DATE / DATETIME을 사용하는 경우 (0) | 2020.04.30 |
[SQL] SQL 서버 문자열로 VARBINARY로 변환 (0) | 2020.04.30 |