Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Diferença entre subconsulta e subconsulta correlacionada


O exemplo acima não é uma Subconsulta Co-relacionada. É Tabela Derivada / Visualização Inline, uma vez que, ou seja, uma Subconsulta dentro da Cláusula FROM.

Uma subconsulta correlacionada deve fazer referência à sua tabela pai (consulta principal). Por exemplo, consulte encontrar o enésimo salário máximo por subconsulta co-relacionada:
SELECT Salary 
FROM Employee E1
WHERE N-1 = (SELECT COUNT(*)
             FROM Employee E2
             WHERE E1.salary <E2.Salary) 

Subconsultas correlacionadas versus subconsultas aninhadas.

As diferenças técnicas entre a subconsulta normal e a subconsulta co-relacionada são:

1. Loop: Loop de subconsulta co-relacionado sob consulta principal; enquanto aninhado não; portanto, a subconsulta correlacionada é executada em cada iteração da consulta principal. Considerando que, no caso de consulta aninhada; a subconsulta é executada primeiro e a consulta externa é executada em seguida. Assim, o máximo não. das execuções são NXM para subconsulta correlacionada e N+M para subconsulta.

2. Dependência (Interno para Externo vs Externo para Interno): No caso de subconsulta correlacionada, a consulta interna depende da consulta externa para processamento, enquanto na subconsulta normal, a consulta externa depende da consulta interna.

3.Desempenho: O uso de subconsultas Co-relacionadas diminui o desempenho, pois executa iterações NXM em vez de iterações N+M. ¨ Execução de Subconsulta Co-relacionada.

Para mais informações com exemplos:

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