Quali sono i vantaggi e gli svantaggi di un join o di una sottoquery?

...

Le query del database recuperano informazioni specifiche dal database.

Una sottoquery è una query all'interno di un'altra query. Una sottoquery potrebbe anche contenere un'altra sottoquery. Si dice che siano subquery "nidificate". Un join è quando si fa riferimento a due o più tabelle nella clausola "From" della query. Motori di database diversi possono ottimizzare le sottoquery e i join in modo diverso. Ad esempio, l'ottimizzatore di DB2 trasformerà una sottoquery in un'unione se vengono soddisfatti determinati criteri. In alcuni casi, un join fornisce prestazioni migliori rispetto a una sottoquery.

Cosa rende una sottoquery

Una sottoquery è un'istruzione "SELECT" all'interno della clausola "WHERE" o "HAVING" di un'istruzione esterna "INSERT", "UPDATE", "MERGE" o "DELETE". La sottoquery è anche chiamata "query interna" o "selezione interna". La sottoquery può avere una clausola "FROM" con una o più tabelle e può avere facoltativamente una clausola "WHERE", "GROUP BY" o "HAVING". È sempre racchiuso tra parentesi.

Video del giorno

Vantaggi e svantaggi delle sottoquery

Le sottoquery sono vantaggiose perché strutturano la query in modo da isolare ogni parte dell'istruzione, eseguire la stessa operazione che normalmente richiederebbe giunzioni e unioni complesse e sono più facili da leggere. Le sottoquery erano anche la base per il nome "Structured Query Language" (SQL) a causa della loro struttura facilmente leggibile. Uno svantaggio è che non è possibile modificare una tabella e selezionare dalla stessa tabella all'interno di una sottoquery nella stessa istruzione SQL. Le sottoquery possono anche richiedere più tempo per l'esecuzione rispetto a un join a causa del modo in cui l'ottimizzatore del database le elabora.

Cosa rende un'unione?

La maggior parte delle sottoquery può essere riscritta come join e la maggior parte dei join può essere riscritta come sottoquery. Un join definisce due o più tabelle in base a una colonna correlata. Le tabelle di solito sono unite su chiavi primarie ed esterne. Ad esempio, una tabella dei dipendenti potrebbe avere una chiave primaria di una colonna ID dipendente, mentre una tabella delle schede attività ha anche una colonna ID dipendente che è una chiave esterna per la tabella dei dipendenti. Il join SQL può essere scritto come "WHERE impiegato.empid = timesheet.empid" o "FROM dipendente JOIN timesheet ON (employee.empid = timesheet.empid)."

Vantaggi e svantaggi dei join

Il vantaggio principale di un join è che viene eseguito più velocemente. L'aumento delle prestazioni potrebbe non essere notato dall'utente finale. Tuttavia, poiché le colonne sono specificatamente denominate, indicizzate e ottimizzate dal motore del database, il tempo di recupero sarà quasi sempre più rapido di quello di una sottoquery. Ci sono anche join interni ed esterni, join sinistro e destro, join completi e join incrociati. Uno svantaggio dell'utilizzo dei join è che non sono facili da leggere come le sottoquery. Un altro svantaggio è che può essere fonte di confusione su quale join sia il tipo appropriato di join da utilizzare per ottenere il set di risultati desiderato corretto.