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

Kiri JOIN lebih cepat atau Inner Join lebih cepat?

Tergantung; jalankan keduanya untuk mencari tahu; lalu jalankan 'jelaskan pilih' untuk penjelasan.

Perbedaan kinerja yang sebenarnya dapat berkisar dari "hampir tidak ada" hingga "cukup signifikan" tergantung pada berapa banyak baris di A dengan id='12345' tidak memiliki catatan yang cocok di B dan C.

Perbarui (berdasarkan rencana kueri yang diposting)

Saat Anda menggunakan INNER JOIN, tidak masalah (dari segi hasil, bukan dari segi kinerja) tabel mana yang harus dimulai, jadi pengoptimal mencoba memilih tabel yang menurutnya akan berkinerja terbaik. Tampaknya Anda memiliki indeks di semua kolom PK/FK yang sesuai dan Anda juga tidak memiliki indeks di friend_events.userid atau terlalu banyak record dengan userid = '13006' dan itu tidak digunakan; pengoptimal memilih tabel dengan lebih sedikit baris sebagai "dasar" - dalam hal ini zcms_users .

Saat Anda menggunakan LEFT JOIN tidak masalah (dari segi hasil) tabel mana yang harus dimulai; jadi friend_events dipetik. Sekarang mengapa dibutuhkan lebih sedikit waktu seperti itu. Saya tidak begitu yakin; Saya menebak friend_events.userid kondisi membantu. Jika Anda menambahkan indeks (apakah itu benar-benar varchar, btw? bukan numerik?) Pada itu, INNER JOIN Anda mungkin berperilaku berbeda (dan menjadi lebih cepat) juga.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Untuk instalasi mysql homebrew, di mana my.cnf?

  2. DELETE FROM `table` AS `alias` ... WHERE `alias`.`column` ... mengapa sintaks error?

  3. Deteksi emotikon dalam string

  4. Mengambil indeks dari baris yang disisipkan

  5. Mengapa MySQL memberikan kesalahan Tidak diizinkan untuk mengembalikan set hasil dari suatu fungsi?