Подтвердить что ты не робот

Разница между подзапросом и коррелированным подзапросом

Является ли следующая часть 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

Кроме того, может кто-то указать разницу между двумя

4b9b3361

Ответ 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 не зависит от внешнего запроса,