it-swarm.asia

Perbedaan antara Hash, Gabung dan Loop bergabung?

Di SQL Server Anda dapat menentukan petunjuk bergabung:

  • HASH BERGABUNG
  • BERGABUNG BERGABUNG
  • LOOP BERGABUNG

Apa definisi dari ketiga petunjuk bergabung, dan kapan masing-masing harus digunakan?

42
Andrew Bickerton

Dari MSDN, dalam topik Konsep Tuning Kueri Lanjut :

SQL Server menggunakan tiga jenis operasi gabungan:

  • Loop bersarang bergabung

  • Gabung bergabung

  • Hash bergabung

Jika satu input gabungan kecil (kurang dari 10 baris) dan input gabungan lainnya cukup besar dan diindeks pada kolom gabungannya, gabungan indeks bersarang loop adalah operasi gabungan tercepat karena membutuhkan paling sedikit I/O dan perbandingan paling sedikit. Untuk informasi lebih lanjut tentang loop bersarang, lihat Memahami Nested Loops Bergabung.

Jika dua input gabungan tidak kecil tetapi diurutkan pada kolom gabungannya (misalnya, jika diperoleh dengan memindai indeks yang diurutkan), gabungan gabungan adalah operasi gabungan tercepat. Jika kedua input gabungan besar dan dua input berukuran sama, gabungan gabungan dengan penyortiran sebelumnya dan gabungan hash menawarkan kinerja yang sama. Namun, operasi hash join seringkali jauh lebih cepat jika dua ukuran input berbeda secara signifikan satu sama lain. Untuk informasi lebih lanjut, lihat Memahami Gabung Bergabung.

Hash joins dapat secara efisien memproses input besar, tidak disortir, tidak diindeks.

Tapi saya percaya bahwa Anda harus mulai dengan topik yang lebih mendasar: Query Tuning dan terakhir pergi menggunakan petunjuk permintaan.

39
Marian