Hash Join [Sistem Basis Data]


     HASH JOIN
Hash join digunakan ketika men-join tabel-tabel yang berukuran besaratau dengan set data yang besar.  Hashjoin memerlukan Equijoin predikat (predikat membandingkan nilai dari satu tabeldengan nilai-nilai dari tabel lain menggunakan operator yang sama ‘=’).
Optimizermenggunakan hash join untuk join dengan dua tabel jikajoin menggunakan Equijoindan jika salah satu dari kondisi berikut benar:
  • Sejumlah data besar yang harus join.
  • Sebuah fraksi besar tabel harus join.
Optimizer menggunakan lebih kecil dari dua tabel atau sumber data untukmembangun sebuah tabel hash dalam memori. Kemudian scan tabel yang lebih besar, menyelidiki tabel hash untukmenemukan baris join. Metode ini paling baik digunakan ketika tabel kecil cocokdi memori yang tersedia. Biaya kemudian dibatasi untuk melewati single readuntuk dua tabel. Hash join akan digunakan, jika tidak ada indeks yang memadaipada kolom join. Ini adalah situasi terburuk.
Query optimizer membuat hash join dalam duatahap, yaitu :
a.      membangun (build) tabel hash dimemori, yang lebih kecil dari dua tabel
b.     Probe ini tabel hash dengan nilaihash untuk setiap tabel baris kedua
AlgoritmaHash Join :
Fase Build
For each R1
begin
               generate hash value of R1 join key
              insert into build table to appropriate hash bucket
end

Fase Probe
for each R2
begin
               generate hash value of R2 join key
               for each R1 in corresponding hash bucket
                               if match R1 and R2
                                              output (R1,R2)
end
Jadi hash join memiliki dua input, yaitumasukan membangun dan masukan probe.

Contoh hash join :
select e.last_name, d.department_name, d.location_id
from employees e, departments d, locations l
where e.department_id = d.department_id;