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

Mengapa LEFT JOIN lebih lambat dari INNER JOIN?

Dengan INNER JOIN, MySQL umumnya akan memulai dengan tabel dengan jumlah baris terkecil. Dalam hal ini, dimulai dengan tabel finished dan mencari catatan yang sesuai di saved menggunakan indeks pada saved.email .

Untuk LEFT JOIN, (tidak termasuk beberapa optimasi) MySQL biasanya menggabungkan record secara berurutan (dimulai dengan tabel paling kiri). Dalam hal ini, MySQL dimulai dengan tabel saved , kemudian mencoba menemukan setiap record yang sesuai di finished . Karena tidak ada yang dapat digunakan indeks di finished.email , itu harus melakukan pemindaian penuh untuk setiap pencarian.

Sunting

Sekarang setelah Anda memposting skema Anda, saya dapat melihat bahwa MySQL mengabaikan indeks (finished.email ) saat beralih dari utf8 ke latin1 set karakter. Anda belum memposting set karakter dan susunan untuk setiap kolom, jadi saya akan menggunakan set karakter default untuk tabel. Susunan harus kompatibel agar MySQL dapat menggunakan indeks.

MySQL dapat memaksa (meningkatkan) sebuah latin1 collation, yang sangat terbatas, hingga utf8 susunan seperti unicode_ci (jadi kueri pertama dapat menggunakan indeks di saved.email dengan meningkatkan latin1 pemeriksaan ke utf8 ), tetapi kebalikannya tidak benar (kueri kedua tidak dapat menggunakan indeks pada finished.email karena tidak dapat menurunkan versi utf8 susunan ke latin1 ).

Solusinya adalah dengan mengubah kedua kolom email ke susunan yang kompatibel, mungkin paling mudah dengan membuat kumpulan karakter dan susunan yang identik.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. integrasi spring 3, hibernate 3, maven dan mysql

  2. Ambil 10 baris terakhir yang dimasukkan dalam tabel

  3. MySQL mengoptimalkan kecepatan INSERT diperlambat karena indeks

  4. Waktu Rata-Rata untuk Membalas Pesan

  5. batasan kunci asing mysql adalah kesalahan yang salah bentuk