Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mana yang lebih cepat:subquery yang berkorelasi atau bergabung?

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbandingan tanggal MySQL

  2. MySQL CONCAT mengembalikan NULL jika ada bidang yang berisi NULL

  3. aktivasi akun php/mysql

  4. Perlu kueri MySQL untuk memilih dari tabel yang menyimpan pasangan nilai kunci

  5. MySQL tidak menghapus catatan