sql >> Databáze >  >> RDS >> Sqlserver

Rozdíl mezi poddotazem a korelovaným poddotazem

Výše uvedený příklad není spolu související dílčí dotaz. Jedná se o odvozenou tabulku / Inline-View, protože jde o dílčí dotaz v rámci klauzule FROM.

Související dílčí dotazy by v něm měly odkazovat na svou nadřazenou (hlavní) tabulku dotazů. Například viz vyhledání N-tého maximálního platu podle souvisejícího dílčího dotazu:

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

Související vs. vnořené poddotazy.

Technické rozdíly mezi normálním dílčím dotazem a souvisejícím dílčím dotazem jsou:

1. Opakování: Související smyčka dílčího dotazu pod hlavním dotazem; zatímco vnořený ne; proto se související dílčí dotaz provede při každé iteraci hlavního dotazu. vzhledem k tomu, že v případě vnořeného dotazu; poddotaz se provede jako první a poté se provede vnější dotaz. Proto maximální ne. z vykonání je NXM pro korelovaný poddotaz a N+M pro poddotaz.

2. Závislost (Inner to Outer vs Outer to Inner): V případě spolu souvisejícího poddotazu závisí vnitřní dotaz na vnějším dotazu pro zpracování, zatímco v normálním poddotazu závisí vnější dotaz na vnitřním dotazu.

3. Výkon: Použití Co-related poddotazu se snižuje, protože provádí NXM iterace namísto N+M iterací. ¨ Provedení souvisejícího dílčího dotazu.

Další informace s příklady:

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



  1. Mohu použít PDO připravený příkaz k navázání identifikátoru (název tabulky nebo pole) nebo klíčového slova syntaxe?

  2. Ladění výkonu databáze pro MariaDB

  3. Jaká je při provádění uložené procedury výhoda použití CommandType.StoredProcedure oproti použití CommandType.Text?

  4. Jak vložit datový rámec pandy přes mysqldb do databáze?