sql >> Database >  >> RDS >> Sqlserver

Verschil tussen subquery en gecorreleerde subquery

Bovenstaand voorbeeld is geen co-gerelateerde subquery. Het is een afgeleide tabel / inline-weergave, d.w.z. een subquery binnen de FROM-clausule.

Een co-gerelateerde subquery moet daarin verwijzen naar de bovenliggende (hoofdquery) tabel. Zie bijvoorbeeld vind het N-de max. salaris op Co-gerelateerde subquery:

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

Co-gerelateerde versus geneste subquery's.

Technische verschillen tussen normale subquery en co-gerelateerde subquery zijn:

1. Looping: Co-gerelateerde subquery-lus onder hoofdquery; overwegende dat genest niet; daarom wordt een co-gerelateerde subquery uitgevoerd op elke iteratie van de hoofdquery. Overwegende dat in het geval van geneste-query; subquery wordt eerst uitgevoerd en vervolgens wordt de buitenste query uitgevoerd. Vandaar het maximale aantal. van de uitvoeringen zijn NXM voor gecorreleerde subquery en N+M voor subquery.

2. Afhankelijkheid (van binnen naar buiten versus buiten naar binnen): In het geval van co-gerelateerde subquery's, is de innerlijke query afhankelijk van de buitenste query voor verwerking, terwijl bij een normale subquery de buitenste query afhankelijk is van de innerlijke query.

3.Prestaties: Het gebruik van Co-gerelateerde subqueryprestaties neemt af, omdat het NXM-iteraties uitvoert in plaats van N+M-iteraties. ¨ Co-gerelateerde uitvoering van subquery's.

Voor meer informatie met voorbeelden:

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



  1. t-sql select krijg alle maanden binnen een reeks van jaren

  2. Kan geen verbinding maken met MySQL-serverfout 111

  3. TOON TABELLEN in MySQL

  4. Kan geen verbinding maken met Postgresql op poort 5432