Mysql
 sql >> Database >  >> RDS >> Mysql

inner join e dove prestazioni della clausola in()?

Dipende dal tuo motore SQL. I sistemi SQL più recenti che dispongono di ottimizzatori di query ragionevoli molto probabilmente riscriveranno entrambe le query sullo stesso piano. In genere, una sottoquery (la seconda query) viene riscritta utilizzando un join (la prima query).

In semplici motori SQL che potrebbero non avere ottimi ottimizzatori di query, il join dovrebbe essere più veloce perché potrebbero eseguire sottoquery in una tabella in memoria temporanea prima di eseguire la query esterna.

In alcuni motori SQL che hanno un footprint di memoria limitato, tuttavia, la sottoquery potrebbe essere più veloce perché non richiede l'unione, il che produce più dati.

Quindi, in sintesi, dipende.