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

Gunakan Serikat atau Gabung - Apa yang Lebih Cepat

Union akan lebih cepat, karena hanya melewati pernyataan SELECT pertama, lalu mem-parsing pernyataan SELECT kedua dan menambahkan hasilnya ke akhir tabel output.

Gabung akan menelusuri setiap baris dari kedua tabel, menemukan kecocokan di tabel lain sehingga membutuhkan lebih banyak pemrosesan karena mencari baris yang cocok untuk setiap baris.

EDIT

Dengan Union, maksud saya Union All karena tampaknya cukup untuk apa yang Anda coba capai. Meskipun Serikat biasa umumnya lebih cepat daripada Bergabung.

EDIT 2 (Balas komentar @seebiscuit)

Saya tidak setuju dengan dia. Secara teknis tidak peduli seberapa bagus Anda bergabung, "JOIN" masih lebih mahal daripada gabungan murni. Saya membuat posting blog untuk membuktikannya di blog saya codePERF[dot]net . Secara praktis mereka melayani 2 tujuan yang sama sekali berbeda dan lebih penting untuk memastikan pengindeksan Anda benar dan menggunakan alat yang tepat untuk pekerjaan itu.

Secara teknis, saya pikir itu dapat diringkas menggunakan 2 rencana eksekusi berikut yang diambil dari posting blog saya:

UNION ALL Rencana Eksekusi

JOIN Rencana Eksekusi

Hasil Praktis

Secara praktis perbedaan pada pencarian indeks berkerumun dapat diabaikan:



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

  2. Buat variabel tabel di MySQL

  3. Mempercepat dump dan impor mysql

  4. Gunakan MySQL untuk menentukan apakah hari ini adalah hari ulang tahun pengguna

  5. Validasi gagal untuk kueri untuk metode JPQL