Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

LEFT JOIN Jauh lebih cepat daripada INNER JOIN

Gabungan Kiri tampaknya lebih cepat karena SQL dipaksa untuk melakukan pemilihan yang lebih kecil terlebih dahulu dan kemudian bergabung ke kumpulan catatan yang lebih kecil ini. Untuk beberapa alasan, pengoptimal tidak ingin melakukan ini secara alami.

3 cara untuk memaksa penggabungan terjadi dalam urutan yang benar:

  1. Pilih subset data pertama ke dalam tabel sementara (atau variabel tabel) lalu gabungkan di atasnya
  2. Gunakan gabungan kiri (dan ingat bahwa ini dapat mengembalikan data yang berbeda karena ini adalah gabungan kiri, bukan gabungan dalam)
  3. gunakan kata kunci FORCE ORDER. Perhatikan bahwa jika ukuran tabel atau skema berubah maka rencana kueri mungkin tidak benar (lihat https://dba.stackexchange.com/questions/45388/forcing-join-order )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. buat tipe di server sql dengan nilai yang diizinkan

  2. Peringatan:Nilai nol dihilangkan dengan operasi SET agregat atau lainnya di Aqua Data Studio

  3. Cara Mendapatkan OBJECT_NAME() dari Database Berbeda di SQL Server

  4. SQL:Suka vs Berisi - Hasil Berbeda

  5. C# Pernyataan yang Disiapkan - tanda @ (at / tanda strudel) query