Різниця між підзапит та корельований підзапит

Чи є наступна частина запиту 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

Крім того, хтось може визначити різницю між обома

33
Насправді це отримана таблиця . До речі, не вдалося скопіювати/вставити закриваючу дужку та псевдонім для отриманої таблиці.
додано Автор Nikola Markovinović, джерело

14 Відповіді

Вищенаведений приклад не є спільним підзаписом Co-related. Це похідна таблиця/вбудований перегляд, оскільки, наприклад, підзапит у межах FROM.

Корельований підзапит повинен посилатися на його батьківську таблицю (основний запит). Наприклад Див. Знайти максимальну заробітну плату N-го сукупного підзапиту:

SELECT Salary 
FROM Employee E1
WHERE N-1 = (SELECT COUNT(*)
             FROM Employee E2
             WHERE E1.salary 

Суміжні Vs Nested-SubQueries.

Технічна відмінність між звичайним підзапитом і відповідним запитом, пов'язаним із спільним запитом:

1. Looping: Co-related sub-query loop under main-query; whereas nested not; therefore co-related sub-query executes on each iteration of main query. Whereas in case of Nested-query; subquery executes first then outer query executes next. Hence, the maximum no. of executes are NXM for correlated subquery and N+M for subquery.

2. Dependency(Inner to Outer vs Outer to Inner): In the case of co-related subquery, inner query depends on outer query for processing whereas in normal sub-query, Outer query depends on inner query.

3.Performance: Using Co-related sub-query performance decreases, since, it performs NXM iterations instead of N+M iterations. ¨ Co-related Sub-query Execution.

Для отримання додаткової інформації з прикладами:

http: //dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-Sql-Sub-Queries-Nested-Co-related.html

69
додано
NXM? >>>>
додано Автор Robert Rocha, джерело
наведений вище приклад = запит ОП ... зазвичай, відповіді відносяться до питання, іноді до інших відповідей, але посилаються на того, хто володіє такою відповіддю ...
додано Автор Felypp Oliveira, джерело
@nayeemDotNetAutorities "Вище наведений приклад не є спів-пов'язаним запитом"? що тут вище? Якщо це стосується іншої відповіді, Plz утримується від використання таких відносних термінів, відповідаючи на іншу відповідь. Тому що те, що може бути вище, може змінитися пізніше.
додано Автор KNU, джерело

Вищенаведений приклад не є спільним підзаписом Co-related. Це похідна таблиця/вбудований перегляд, оскільки, наприклад, підзапит у межах FROM.

Корельований підзапит повинен посилатися на його батьківську таблицю (основний запит). Наприклад Див. Знайти максимальну заробітну плату N-го сукупного підзапиту:

SELECT Salary 
FROM Employee E1
WHERE N-1 = (SELECT COUNT(*)
             FROM Employee E2
             WHERE E1.salary 

Суміжні Vs Nested-SubQueries.

Технічна відмінність між звичайним підзапитом і відповідним запитом, пов'язаним із спільним запитом:

1. Looping: Co-related sub-query loop under main-query; whereas nested not; therefore co-related sub-query executes on each iteration of main query. Whereas in case of Nested-query; subquery executes first then outer query executes next. Hence, the maximum no. of executes are NXM for correlated subquery and N+M for subquery.

2. Dependency(Inner to Outer vs Outer to Inner): In the case of co-related subquery, inner query depends on outer query for processing whereas in normal sub-query, Outer query depends on inner query.

3.Performance: Using Co-related sub-query performance decreases, since, it performs NXM iterations instead of N+M iterations. ¨ Co-related Sub-query Execution.

Для отримання додаткової інформації з прикладами:

http: //dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-Sql-Sub-Queries-Nested-Co-related.html

69
додано
NXM? >>>>
додано Автор Robert Rocha, джерело
наведений вище приклад = запит ОП ... зазвичай, відповіді відносяться до питання, іноді до інших відповідей, але посилаються на того, хто володіє такою відповіддю ...
додано Автор Felypp Oliveira, джерело
@nayeemDotNetAutorities "Вище наведений приклад не є спів-пов'язаним запитом"? що тут вище? Якщо це стосується іншої відповіді, Plz утримується від використання таких відносних термінів, відповідаючи на іншу відповідь. Тому що те, що може бути вище, може змінитися пізніше.
додано Автор KNU, джерело

Корельований підзапит - це суб-запит, який використовує значення з зовнішнього запиту. У цьому випадку внутрішній запит повинен виконуватися для кожного рядка зовнішнього запиту.

See example here 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'); 

CoRelated Subquery Example -

Запит, щоб знайти всіх працівників, зарплата яких перевищує середню за їх відділ

 SELECT employee_number, name
       FROM employees emp
       WHERE salary > (
         SELECT AVG(salary)
           FROM employees
           WHERE department = emp.department);
38
додано
" У цьому випадку внутрішній запит повинен бути виконаний для кожного рядка зовнішнього запиту " - зауважте, що так виконується логічно . Більшість сучасних оптимізаторів, ймовірно, перепишуть спільний підзапит у приєднання, якщо це можливо (і, таким чином, уникаючи дорогого виконання підзапитів за рядком)
додано Автор a_horse_with_no_name, джерело
У наведеному прикладі я не бачу відповідного підзапиту.
додано Автор Churk, джерело
Багато сучасних погано виконуваних запитів, що використовують корельовані підзапити, поліпшуються шляхом заміни відповідних підзапитів вручну. Крім того, що відбувається, якщо оптимізатор не входить до списку?
додано Автор Used_By_Already, джерело
@a_horse_with_no_name "Більшість сучасних оптимізаторів, можливо, перепишуть спільний підзапит у приєднання, якщо це можливо" - це досить невизначене узагальнення. Корельовані підзапроси - це RBAR, петлі, які виконують Row-By-Agonizing-Row, і їх слід уникати в коді користувача. sqlservercentral.com/articles/Stairway+Series/105972 "відповідний підзапит потрібно виконати для кожного рядка-кандидата у зовнішньому запиті ".
додано Автор Davos, джерело
Я почув від своїх колег, що це співвідповідач. Але я не можу зрозуміти, як, оскільки внутрішній запит працює незалежно. Отже, чи є моїм запитом кореляційний підзапит або звичайний підзапит?
додано Автор Divakar, джерело
Прочитайте уважно
додано Автор Alex, джерело
Там немає відповідного підзапиту
додано Автор Alex, джерело
Це простий підзапит, наведений у прикладі, співвіднесений ви можете знайти за посиланням wiki. Будь ласка, пробачте мою відповідь за те, що я трохи розбещений
додано Автор Alex, джерело

Корельований підзапит - це суб-запит, який використовує значення з зовнішнього запиту. У цьому випадку внутрішній запит повинен виконуватися для кожного рядка зовнішнього запиту.

See example here 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'); 

CoRelated Subquery Example -

Запит, щоб знайти всіх працівників, зарплата яких перевищує середню за їх відділ

 SELECT employee_number, name
       FROM employees emp
       WHERE salary > (
         SELECT AVG(salary)
           FROM employees
           WHERE department = emp.department);
38
додано
" У цьому випадку внутрішній запит повинен бути виконаний для кожного рядка зовнішнього запиту " - зауважте, що так виконується логічно . Більшість сучасних оптимізаторів, ймовірно, перепишуть спільний підзапит у приєднання, якщо це можливо (і, таким чином, уникаючи дорогого виконання підзапитів за рядком)
додано Автор a_horse_with_no_name, джерело
У наведеному прикладі я не бачу відповідного підзапиту.
додано Автор Churk, джерело
Багато сучасних погано виконуваних запитів, що використовують корельовані підзапити, поліпшуються шляхом заміни відповідних підзапитів вручну. Крім того, що відбувається, якщо оптимізатор не входить до списку?
додано Автор Used_By_Already, джерело
@a_horse_with_no_name "Більшість сучасних оптимізаторів, можливо, перепишуть спільний підзапит у приєднання, якщо це можливо" - це досить невизначене узагальнення. Корельовані підзапроси - це RBAR, петлі, які виконують Row-By-Agonizing-Row, і їх слід уникати в коді користувача. sqlservercentral.com/articles/Stairway+Series/105972 "відповідний підзапит потрібно виконати для кожного рядка-кандидата у зовнішньому запиті ".
додано Автор Davos, джерело
Я почув від своїх колег, що це співвідповідач. Але я не можу зрозуміти, як, оскільки внутрішній запит працює незалежно. Отже, чи є моїм запитом кореляційний підзапит або звичайний підзапит?
додано Автор Divakar, джерело
Там немає відповідного підзапиту
додано Автор Alex, джерело
Це простий підзапит, наведений у прикладі, співвіднесений ви можете знайти за посиланням wiki. Будь ласка, пробачте мою відповідь за те, що я трохи розбещений
додано Автор Alex, джерело
Прочитайте уважно
додано Автор Alex, джерело

Підзапит являє собою оператор select, який вбудований у пункт іншого оператора select.

Приклад:

select ename, sal 
from emp  where sal > (select sal 
                       from emp where ename ='FORD');

Корельований підзапит являє собою підзапит, який оцінюється один раз для кожного рядка, обробленого зовнішнім запитом або основним запитом. Виконати Inner query на основі значення, отриманого за допомогою Outer query, всі значення, що повертаються основним запитом, співпадають. Запит INNER керується запитом OUTER.

Приклад:

select empno,sal,deptid 
from emp e 
where sal=(select avg(sal) 
           from emp where deptid=e.deptid);

РІЗНИЦЯ

Внутрішній запит виконується першим і знаходить значення, зовнішній запит виконується один раз, використовуючи значення з внутрішнього запиту (підзапит)

Вибирайте за зовнішнім запитом, виконуйте внутрішній запит, використовуючи значення зовнішнього запиту, використовуйте значення, отримані з внутрішнього запиту, щоб визначити або дискваліфікувати зовнішній запит (корельований)

For more information : http://www.plsqlinformation.com/2016/03/РІЗНИЦЯ-between-subquery-and-correlated-subquery.html

6
додано

Підзапит являє собою оператор select, який вбудований у пункт іншого оператора select.

Приклад:

select ename, sal 
from emp  where sal > (select sal 
                       from emp where ename ='FORD');

Корельований підзапит являє собою підзапит, який оцінюється один раз для кожного рядка, обробленого зовнішнім запитом або основним запитом. Виконати Inner query на основі значення, отриманого за допомогою Outer query, всі значення, що повертаються основним запитом, співпадають. Запит INNER керується запитом OUTER.

Приклад:

select empno,sal,deptid 
from emp e 
where sal=(select avg(sal) 
           from emp where deptid=e.deptid);

РІЗНИЦЯ

Внутрішній запит виконується першим і знаходить значення, зовнішній запит виконується один раз, використовуючи значення з внутрішнього запиту (підзапит)

Вибирайте за зовнішнім запитом, виконуйте внутрішній запит, використовуючи значення зовнішнього запиту, використовуйте значення, отримані з внутрішнього запиту, щоб визначити або дискваліфікувати зовнішній запит (корельований)

For more information : http://www.plsqlinformation.com/2016/03/РІЗНИЦЯ-between-subquery-and-correlated-subquery.html

6
додано

ЗВ'ЯЗАНІ ПІДВ'ЯЗКИ: Оцінюється для кожного рядка, обробленого головним запитом. Виконати Inner-запит на основі значення, отриманого за допомогою Outer query. Продовжується, доки не збігаються всі значення, повернуті основним запитом. Запит INNER керується запитом OUTER

Приклад:

ВИБРАТИ empno, fname, sal, deptid ВІД emp e WHERE sal = (ВИБІР AVG (sal) FROM emp WHERE deptid = e.deptid)

Корельований підзапит спеціально обчислює AVG (sal) для кожного відділу.

Підзаголовок: виконується спочатку, виконується один раз, повертає значення, що використовуються запитом MAIN. Запит OUTER керується запитом INNER

5
додано

ЗВ'ЯЗАНІ ПІДВ'ЯЗКИ: Оцінюється для кожного рядка, обробленого головним запитом. Виконати Inner-запит на основі значення, отриманого за допомогою Outer query. Продовжується, доки не збігаються всі значення, повернуті основним запитом. Запит INNER керується запитом OUTER

Приклад:

ВИБРАТИ empno, fname, sal, deptid ВІД emp e WHERE sal = (ВИБІР AVG (sal) FROM emp WHERE deptid = e.deptid)

Корельований підзапит спеціально обчислює AVG (sal) для кожного відділу.

Підзаголовок: виконується спочатку, виконується один раз, повертає значення, що використовуються запитом MAIN. Запит OUTER керується запитом INNER

5
додано

коли мова йде про підзапит і спільно пов'язаний запит, вони мають внутрішній запит і зовнішній запит. Єдина відмінність полягає в тому, що внутрішній запит не залежить від зовнішнього запиту.

2
додано

коли мова йде про підзапит і спільно пов'язаний запит, вони мають внутрішній запит і зовнішній запит. Єдина відмінність полягає в тому, що внутрішній запит не залежить від зовнішнього запиту.

2
додано

Я думаю, нижче пояснення допоможе вам ..  диференціація між ними: Корельований підзапит - це внутрішній запит, на який посилається головний запит (зовнішній запит), такий внутрішній запит, який вважається повторно вилученим.

non-correlated subquery is a sub query that is an independent of the outer query and it can executed on it's own without relying on main outer query.

plain subquery is not dependent on the outer query,

1
додано
Я почув від своїх колег, що це співвідповідач. Але я не можу зрозуміти, як, оскільки внутрішній запит працює незалежно. Отже, чи є моїм запитом кореляційний підзапит або звичайний підзапит?
додано Автор Divakar, джерело

Я думаю, нижче пояснення допоможе вам ..  диференціація між ними: Корельований підзапит - це внутрішній запит, на який посилається головний запит (зовнішній запит), такий внутрішній запит, який вважається повторно вилученим.

non-correlated subquery is a sub query that is an independent of the outer query and it can executed on it's own without relying on main outer query.

plain subquery is not dependent on the outer query,

1
додано
Я почув від своїх колег, що це співвідповідач. Але я не можу зрозуміти, як, оскільки внутрішній запит працює незалежно. Отже, чи є моїм запитом кореляційний підзапит або звичайний підзапит?
додано Автор Divakar, джерело

У запиті SQL, якщо внутрішній запит виконується для кожного рядка зовнішнього запиту. Якщо внутрішній запит виконується один раз і результат споживається зовнішнім запитом, то він називається не спів-пов'язаним запитом.

Корисні підзаписи зазвичай відповідають звичайним об'єднати запити, тобто об'єднати запити, які не мають під-запитів, і зазвичай можуть бути виражені як такі. Іноді рекомендується, щоб вони переводилися в такі приєднані запити, оскільки більшість СУБД SQL виконуватимуть їх .....

0
додано

У запиті SQL, якщо внутрішній запит виконується для кожного рядка зовнішнього запиту. Якщо внутрішній запит виконується один раз і результат споживається зовнішнім запитом, то він називається не спів-пов'язаним запитом.

Корисні підзаписи зазвичай відповідають звичайним об'єднати запити, тобто об'єднати запити, які не мають під-запитів, і зазвичай можуть бути виражені як такі. Іноді рекомендується, щоб вони переводилися в такі приєднані запити, оскільки більшість СУБД SQL виконуватимуть їх .....

0
додано