So che possiamo fare correlated subqueries e partecipare. Ma quale è più veloce? C'è una regola d'oro o devo misurare entrambi?Qual è più veloce: sottoquery o join correlati?
risposta
In primo luogo, una sottoquery correlata è in realtà un tipo di join. Non esiste una regola d'oro su chi produce il miglior piano di esecuzione. Se sei interessato alle prestazioni, devi provare le diverse forme per vedere cosa funziona meglio. O, almeno, guarda i piani di exeuction per prendere quella decisione.
In generale, tendo ad evitare subquery correlate per un paio di motivi. Primo, possono quasi sempre essere scritti senza la correlazione. In secondo luogo, molti motori di query li trasformano in join di loop nidificati (anche se utilizzano indici) e altre strategie di join potrebbero essere migliori. In questi casi, le subquery correlate rendono difficile il parallelismo della query. Terzo, le subquery correlate sono solitamente nelle clausole SELECT o WHERE. Mi piace che tutti i miei tavoli siano nella clausola FROM.
In MySQL, tuttavia, le sottoquery correlate sono spesso la maggior parte del modo efficiente per eseguire una query. Ciò è particolarmente vero quando si utilizza una sottoquery in una clausola IN
. Quindi, non esiste una regola d'oro.
- 1. Qual è più veloce: UNISCI con GROUP BY o una sottoquery?
- 2. numpy.max o max? Qual è più veloce?
- 3. Cosa c'è di meglio? Sottoquery o inner join dieci tabelle?
- 4. PHP: Qual è il più veloce SOAP, file_get_contents o Curl?
- 5. Qual è più veloce, accesso puntatore o accesso di riferimento?
- 6. Qual è più veloce: stili ripetuti o selettori ripetitori?
- 7. Python - Qual è più veloce per analizzare Json o XML?
- 8. WCF - qual è il legame più veloce?
- 9. Come scrivere sottoquery nell'istruzione OUTER JOIN
- 10. È HttpWebRequest o Webclient più veloce
- 11. doppio o mobile, che è più veloce?
- 12. che è più veloce, equalsIgnoreCase o compareToIgnoreCase
- 13. che è più veloce? Dichiarazione o PreparedStatement
- 14. Quale è più veloce - INSTR o LIKE?
- 15. Quale è più veloce, XPath o Regexp?
- 16. Quale è più veloce? Confronto o assegnazione?
- 17. Chi è più veloce: PEG o GLR?
- 18. Cache o registri - che è più veloce?
- 19. write o printf, che è più veloce?
- 20. Qual è lo stile CSS più veloce/più efficiente
- 21. HQL: è possibile eseguire un JOIN INTERNO su una sottoquery?
- 22. SQLAlchemy sottoquery in da clausola senza join
- 23. quando java è più veloce di C++ (o quando JIT è più veloce, quindi precompilato)?
- 24. Linq è più veloce, più lento o uguale?
- 25. unordered_map: quale è più veloce find() o count()?
- 26. Perché l'inserimento e il join delle tabelle #temp è più veloce?
- 27. SQLite Android: quale query ("query" o "rawQuery") è più veloce?
- 28. Qual è l'algoritmo più veloce per ordinare un elenco collegato?
- 29. jQuery cosa è più veloce: selettori o metodi?
- 30. perché MySQL JOIN è significativamente più veloce di WHERE IN (subquery)
È necessario misurare in base alla query. Dipende dai tuoi dati, dimensioni, schema. In altre parole, non c'è una regola d'oro. – Cfreak
@Cfreak - aggiungilo come risposta - perché è corretto. – RQDQ