Database SQL : Nested Loops Join

July 06, 2017

Sesekali bikin tulisan tentang mata kuliah ya, jadi kesempatan ini saya akan menjelaskan secara ringkas dan sederhana mengenai materi yang saya pelajari yaitu Nested Loops Join. Apabila terdapat kesalahan, mohon untuk dikoreksi pada kolom komentar, terima kasih.

Jadi sebetulnya apa sih Nested Loops Join itu?? Secara sederhananya, Nested Loops Join itu membandingkan tiap baris dari satu table (Dikenal dengan sebutan Outer Table) dengan tiap baris pada satu table lainnya (Dikenal dengan sebutan Inner Table) mencari suatu baris yang mana memenuhi persyaratan dari fungsi Join.

Kurang lebih, logika dasar perjalanan dari proses ini mirip seperti model matematika saat SMA dahulu, seperti gambar dibawah ini:

Algoritma dasar dari proses ini dapat diekspresikan melalui pseudocode dibawah ini:



Apabila kita melakukan proses Nested Loop Join, maka total cost baris yang dihasilkan berbanding lurus dengan besar size table yang ada pada tiap table, besar size pada Outer Table dikalikan dengan besar size Inner Table. Namun, dalam praktiknya kita berusaha untuk meminimalisir cost dengan mengurangi jumlah baris pada Inner Table terhadap baris pada Outer Table.

Contoh melakukan Nested Loops Join adalah sebagai berikut, akan dibuat dan digunakan 2 table (Customer dan Sales) dengan masing-masing data dibawah ini.



Lalu, akan dilakukan proses Nested Loops Join menggunakan Query dengan "Set Statistics Profile On" seperti berikut





Pada hal ini, yang menjadi Outer Table adalah Customer, sedangkan yang jadi Inner Table adalah Sales. Proses scanning pun dimulai dengan memilih table Customer terlebih dahulu dengan mengambil satu customer. Untuk tiap customer yang dipilih, dilakukan proses scanning table Sales.
Dikarenakan kita memiliki tiga customer, maka kita mengeksekusi table Sales sebanyak 3x dimana tiap scan table Sales, akan mengembalikan hasil empat baris.
Pada kasus ini, kita akan membandingkan tiap sales terhadap customer dan mencari keduanya yang mana mempunyai Cust_Id yang sama pada kedua table, jika ditemukan, maka akan ditampilkan dengan berpasangan. Dikarenakan kita mempunyai data customer sebanyak 3 dan data sales sebanyak 4, maka proses pembandingan dan pencarian yang dilakukan sebanyak 3x4 = 12 kali dan menghasilkan 3 hasil yang sesuai

Beberapa syarat yang berlaku dalam Nested Loops Join adalah sebagai berikut:
  1. Nested Loops Joins support semua jenis Join Predicate termasuk Equality Predicate dan Inequality Predicate
  2. Nested Loops Joins support logical join operator:
  • Inner Join
  • left Outer Join
  • Cross Join
  • Cross Apply
  • Outer Apply
  • Left Semi Join
  • Left Anti Semi Join
      3. Nested Loops Join TIDAK support logical join operator:
  • Right & Full Outer Join
  • Right Semi Join & Right Anti Semi Join


Jadi, apakah penggunaan Nested Loops ini bagus ataukah buruk??

Semua itu bergantung pada kondisi yang ada, Tiap algoritma join akan bekerja dengan baik dan benar pada saat yang tepat dan akan bekerja dengan tidak maksimal pada saat yang salah. Namun pada dasarnya, dikarenakan cost dari penggunaan Nested Loops Join ini bergantung dengan size Outer Table dikalikan dengan size Inner Table, maka penggunaan Nested Loops Join umumnya digunakan pada kumpulan data yang tidak terlalu besar.

You Might Also Like

0 komentar