Pertama, subquery yang berkorelasi benar-benar merupakan jenis gabungan. Tidak ada aturan emas tentang mana yang menghasilkan rencana eksekusi terbaik. Jika Anda tertarik pada kinerja, Anda perlu mencoba berbagai bentuk untuk melihat mana yang paling berhasil. Atau, setidaknya, lihat rencana eksekusi untuk membuat keputusan itu.
Secara umum, saya cenderung menghindari subquery yang berkorelasi karena beberapa alasan. Pertama, mereka hampir selalu dapat ditulis tanpa korelasi. Kedua, banyak mesin kueri mengubahnya menjadi gabungan loop bersarang (walaupun menggunakan indeks), dan strategi gabungan lainnya mungkin lebih baik. Dalam kasus seperti itu, subkueri yang berkorelasi menyulitkan untuk memparalelkan kueri. Ketiga, subkueri berkorelasi biasanya dalam klausa SELECT atau WHERE. Saya suka semua tabel saya berada di klausa FROM.
Namun di MySQL, subquery yang berkorelasi sering kali paling cara yang efisien untuk melakukan query. Ini terutama benar saat menggunakan subkueri dalam IN
ayat. Jadi, tidak ada aturan emas.