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

Apakah ada yang salah dengan join yang tidak menggunakan kata kunci JOIN di SQL atau MySQL?

Memfilter gabungan hanya menggunakan WHERE bisa sangat tidak efisien dalam beberapa skenario umum. Misalnya:

SELECT * FROM people p, companies c 
    WHERE p.companyID = c.id AND p.firstName = 'Daniel'

Sebagian besar basis data akan menjalankan kueri ini secara harfiah, pertama-tama gunakan produk Cartesian dari people dan companies tabel dan lalu pemfilteran oleh mereka yang memiliki companyID yang cocok dan id bidang. Sementara produk yang sepenuhnya tidak dibatasi tidak ada di mana pun kecuali dalam memori dan hanya sesaat, perhitungannya membutuhkan waktu.

Pendekatan yang lebih baik adalah mengelompokkan batasan dengan JOIN s jika relevan. Ini tidak hanya secara subjektif lebih mudah dibaca tetapi juga jauh lebih efisien. Jadi:

SELECT * FROM people p JOIN companies c ON p.companyID = c.id
    WHERE p.firstName = 'Daniel'

Ini sedikit lebih lama, tetapi database dapat melihat ON klausa dan menggunakannya untuk menghitung JOIN . yang dibatasi sepenuhnya langsung, daripada memulai dengan semuanya dan kemudian membatasi. Ini lebih cepat untuk dihitung (terutama dengan kumpulan data besar dan/atau gabungan banyak tabel) dan membutuhkan lebih sedikit memori.

Saya mengubah setiap kueri yang saya lihat yang menggunakan "koma JOIN " sintaks. Menurut pendapat saya, satu-satunya tujuan keberadaannya adalah keringkasan. Mempertimbangkan dampak kinerja, saya rasa ini bukan alasan yang kuat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menghubungkan ke MySQL dari baris perintah

  2. Bagaimana cara menyimpan gambar di database MySQL

  3. Format tanggal MySQL – apa yang perlu Anda ketahui

  4. WAMP Tidak dapat mengakses di jaringan lokal 403 Dilarang

  5. Fungsi MySQL ASIN() – Mengembalikan Arc Sinus dari Angka