sql >> Base de Datos >  >> RDS >> Sqlserver

Diferencia entre subconsulta y subconsulta correlacionada

El ejemplo anterior no es una subconsulta corelacionada. Es una tabla derivada/vista en línea, es decir, una subconsulta dentro de la cláusula FROM.

Una subconsulta correlacionada debe hacer referencia a su tabla principal (consulta principal) en ella. Por ejemplo, vea encontrar el N-ésimo salario 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 co-relacionadas versus anidadas.

La diferencia técnica entre la subconsulta normal y la subconsulta corelacionada son:

1. Bucle: Bucle de subconsulta co-relacionado bajo consulta principal; mientras que no anidado; por lo tanto, la subconsulta corelacionada se ejecuta en cada iteración de la consulta principal. Mientras que en el caso de la consulta anidada; la subconsulta se ejecuta primero y luego la consulta externa se ejecuta a continuación. Por lo tanto, el número máximo. de las ejecuciones son NXM para la subconsulta correlacionada y N+M para la subconsulta.

2. Dependencia (de interior a exterior frente a exterior a interior): En el caso de una subconsulta corelacionada, la consulta interna depende de la consulta externa para su procesamiento, mientras que en la subconsulta normal, la consulta externa depende de la consulta interna.

3.Rendimiento: El rendimiento de las subconsultas relacionadas con Co disminuye, ya que realiza iteraciones NXM en lugar de iteraciones N+M. ¨ Ejecución de subconsultas corelacionadas.

Para más información con ejemplos:

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