Разница между подзапросом и коррелированным подзапросом
Является ли следующая часть 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');
Ответ 2
Вышеприведенный пример не связан с Sub-Query. Это Derived Table/Inline-View с i.e, Sub-query в разделе FROM.
A Пересекающийся подзапрос должен ссылаться на его родительскую (основную) таблицу в нем. Например, см. "Наймите максимальную зарплату Nth по связанным с суб-запросом":
SELECT Salary
FROM Employee E1
WHERE N-1 = (SELECT COUNT(*)
FROM Employee E2
WHERE E1.salary <E2.Salary)
Сопутствующие Vs-вложенные-SubQueries.
Техническая разница между обычным суб-запросом и связанным с ним суб-запросом:
1. Циклический: Сопутствующий цикл подзапроса в основном запросе; тогда как вложенные нет; поэтому сопутствующий суб-запрос выполняется на каждой итерации основного запроса. Если в случае вложенного запроса; подзапрос выполняется сначала, затем выполняется внешний запрос. Следовательно, максимум нет. of выполняет NXM для коррелированного подзапроса и N + M для подзапроса.
2. Зависимость (от внутреннего к внешнему, от внешнего к внутреннему): В случае сопутствующего подзапроса внутренний запрос зависит от внешнего запроса для обработки, тогда как в обычном суб-запросе внешний запрос зависит от внутреннего запроса.
3.Performance: Использование Co-related sub-query performance уменьшается, поскольку он выполняет итерации NXM вместо N + M итераций. ¨ Совместное выполнение подзапросов.
Для получения дополнительной информации с примерами:
http://dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-Sql-Sub-Queries-Nested-Co-related.html
Ответ 3
КОРРЕЛИРОВАННЫЕ СУБКЕРЫ: оценивается для каждой строки, обрабатываемой основным запросом. Выполните внутренний запрос на основе значения, полученного с помощью запроса Outer. Продолжается до тех пор, пока не будут сопоставлены все значения, возвращаемые основным запросом. Запрос INNER управляется запросом OUTER
Пример:
SELECT empno,fname,sal,deptid FROM emp e WHERE sal=(SELECT AVG(sal) FROM emp WHERE deptid=e.deptid)
Коррелированный подзапрос специально вычисляет AVG(sal)
для каждого отдела.
SUBQUERY: выполняется сначала, выполняется один раз, возвращает значения, которые будут использоваться MAIN Query. Запрос OUTER управляется INNER QUERY
Ответ 4
Подзапрос - это оператор выбора, встроенный в предложение другого оператора select.
EX:
select ename, sal
from emp where sal > (select sal
from emp where ename ='FORD');
A Коррелированный подзапрос - это подзапрос, который оценивается один раз для каждой строки, обработанной внешним запросом или основным запросом. Выполните Внутренний запрос на основе значения, полученного из запроса Outer, все значения, возвращаемые основным запросом, будут сопоставлены. Запрос INNER управляется запросом OUTER.
Пример:
select empno,sal,deptid
from emp e
where sal=(select avg(sal)
from emp where deptid=e.deptid);
РАЗН
Внутренний запрос выполняется первым и находит значение, внешний запрос выполняется один раз с использованием значения из внутреннего запроса (подзапрос)
Извлеките внешний запрос, выполните внутренний запрос, используя значение внешнего запроса, используйте значения, полученные из внутреннего запроса, чтобы квалифицировать или дисквалифицировать внешний запрос (коррелированный)
Для получения дополнительной информации:
http://www.plsqlinformation.com/2016/03/difference-between-subquery-and-correlated-subquery.html
Ответ 5
когда дело доходит до подзапроса и связанного с ним запроса, оба имеют внутренний запрос и внешний запрос, единственное различие заключается в подзапросе, внутренний запрос не зависит от внешнего запроса, тогда как в связанном внутреннем запросе зависит от внешнего.
Ответ 6
Я думаю, что ниже объяснение поможет вам..
дифференциация между ними:
Correlated subquery
- это внутренний запрос, на который ссылается основной запрос (внешний запрос), так что внутренний запрос рассматривается как повторно израсходованный.
non-correlated subquery
- это подзапрос, который не зависит от внешнего запроса и может выполняться на нем самостоятельно, не полагаясь на основной внешний запрос.
plain subquery
не зависит от внешнего запроса,