Aké sú výhody a nevýhody spojenia alebo poddotazu?

...

Databázové dotazy získavajú špecifické informácie z databázy.

Poddotaz je dotaz v rámci iného dotazu. Poddotaz môže obsahovať aj ďalší poddotaz. Hovorí sa, že ide o „vnorené“ poddotazy. Spojenie je, keď sa v klauzule „Od“ dotazu odkazuje na dve alebo viac tabuliek. Rôzne databázové nástroje môžu optimalizovať poddotazy a spojenia odlišne. Optimalizátor DB2 napríklad transformuje poddotaz na spojenie, ak sú splnené určité kritériá. V niektorých prípadoch spojenie prináša lepší výkon ako poddotaz.

Čo robí poddotaz

Poddotaz je príkaz „SELECT“ v rámci klauzuly „WHERE“ alebo „HAVING“ vonkajšieho príkazu „INSERT“, „UPDATE“, „MERGE“ alebo „DELETE“. Poddotaz sa tiež nazýva „vnútorný dopyt“ alebo „vnútorný výber“. Poddotaz môže mať klauzulu "FROM" s jednou alebo viacerými tabuľkami a voliteľne môže mať klauzulu "WHERE", "GROUP BY" alebo "HAVING". Vždy je v zátvorkách.

Video dňa

Výhody a nevýhody poddotazov

Poddotazy sú výhodné, pretože štruktúrujú dopyt tak, aby izolovali každú časť príkazu, vykonať rovnakú operáciu, ktorá by si zvyčajne vyžadovala zložité spojenia a spojenia a je jednoduchšie čítať. Poddotazy boli dokonca základom pre názov „Structured Query Language“ (SQL) kvôli ich ľahko čitateľnej štruktúre. Nevýhodou je, že nemôžete upravovať tabuľku a vyberať z rovnakej tabuľky v rámci poddotazu v rovnakom príkaze SQL. Vykonanie poddotazov môže tiež trvať dlhšie ako spojenie kvôli tomu, ako ich spracuje optimalizátor databázy.

Čo robí spojenie

Väčšinu poddotazov možno prepísať ako spojenia a väčšinu spojení je možné prepísať ako poddotazy. Spojenie definuje dve alebo viac tabuliek pomocou súvisiaceho stĺpca. Tabuľky sú zvyčajne spojené primárnym a cudzím kľúčom. Napríklad tabuľka zamestnanca môže mať primárny kľúč stĺpca ID zamestnanca, zatiaľ čo tabuľka časového výkazu má tiež stĺpec ID zamestnanca, ktorý je cudzím kľúčom tabuľky zamestnanca. SQL spojenie môže byť napísané ako "WHERE zamestnanec.empid = timesheet.empid" alebo "FROM zamestnanec JOIN timesheet ON (employee.empid = timesheet.empid)."

Výhody a nevýhody spojení

Hlavnou výhodou spojenia je, že sa vykonáva rýchlejšie. Zvýšenie výkonu nemusí byť koncovým používateľom viditeľné. Avšak, pretože stĺpce sú špecificky pomenované a indexované a optimalizované databázovým mechanizmom, čas načítania bude takmer vždy rýchlejší ako čas poddotazu. Existujú tiež vnútorné a vonkajšie spojenia, ľavé a pravé spojenia, plné spojenia a krížové spojenia. Nevýhodou používania spojení je, že nie sú tak ľahko čitateľné ako poddotazy. Ďalšou nevýhodou je, že môže byť mätúce, ktoré spojenie je vhodným typom spojenia na získanie správnej sady požadovaných výsledkov.