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

EXISTS vs JOIN a použití klauzule EXISTS

EXISTS se používá k vrácení booleovské hodnoty JOIN vrátí celou jinou tabulku

EXISTS se používá pouze k testování, zda dílčí dotaz vrací výsledky, a jakmile se tak stane, dojde ke zkratu. JOIN se používá k rozšíření sady výsledků jejím zkombinováním s dalšími poli z jiné tabulky, ke které existuje vztah.

Ve vašem příkladu jsou dotazy sémanticky ekvivalentní.

Obecně používejte EXISTS kdy:

  • Nemusíte vracet data ze související tabulky
  • V související tabulce máte podvody (JOIN může způsobit duplicitní řádky, pokud se hodnoty opakují)
  • Chcete zkontrolovat existenci (použijte místo LEFT OUTER JOIN...NULL podmínka)

Pokud máte správné indexy, většinou EXISTS bude fungovat stejně jako JOIN . Výjimkou jsou velmi komplikované poddotazy, kde je obvykle rychlejší použít EXISTS .

Pokud vaše JOIN klíč není indexován, může být rychlejší použít EXISTS ale budete muset otestovat své konkrétní okolnosti.

JOIN syntaxe je také normálně čitelnější a jasnější.



  1. Vygenerujte sadu výsledků s narůstajícími daty v TSQL

  2. Jednoduché řešení problémů s přihlášením do PHP SQL

  3. Zaznamenat čas dotazu v SQLite na Androidu

  4. Vytvořte databázi Postgres pomocí pythonu