BEDUG MERIAH Diskon 95%
Belajar Data 6 BULAN Bersertifikat hanya Rp150K!

0 Hari 3 Jam 31 Menit 57 Detik

Ragam Implementasi SQL pada Join Statement

Belajar Data Science di Rumah 20-September-2022
https://dqlab.id/files/dqlab/cache/bfb5736e4b0a2d0016ea782359d6e4a4_x_Thumbnail800.jpeg

Bergabung adalah salah satu konsep yang paling umum dalam database dan gudang data. Dalam model data database relasional, data yang berbeda sering ditempatkan di tabel yang berbeda untuk menghindari penyimpanan data yang berlebihan, yang dibagi menjadi tabel fakta dan tabel dimensi.


Hal ini dapat menghemat ruang penyimpanan data. Namun, Sahabat DQ perlu mengaitkan beberapa tabel melalui gabungan saat menganalisis data. Bergabung sangat diperlukan untuk analisis data. 


Bergabung memiliki banyak jenis dan cara penggunaan dan implementasi yang berbeda. Cara penggunaan dan implementasi yang berbeda akan menyebabkan banyak perbedaan kinerja. Artikel ini bertujuan untuk mengurutkan penggunaan dan implementasi internal gabungan secara menyeluruh.


Selain itu, ini bertujuan untuk membantu Sahabat DQ memahami cara menulis SQL Join berkinerja tinggi dengan mempelajari implementasi internalnya. 


Operasi gabungan SQL adalah salah satu operasi SQL yang paling kuat dan umum digunakan, tetapi sedikit perhatian diberikan pada bagaimana mesin SQL internal memecah tugas operasi gabungan. Posting ini akan mengeksplorasi algoritma umum yang digunakan database untuk menghitungnya, termasuk loop bersarang, hash, dan gabungan gabungan.


Tujuan kami adalah untuk bertindak sebagai sumber daya bagi pengguna SQL yang tertarik untuk menjelajahi pengoptimalan.


Lalu apa saja ragam lain SQL Join? Yuk simak selengkapnya sekarang!


1. Nested Loop Join

Gabung didefinisikan sebagai produk kartesius dari dua tabel yang diikuti oleh filter pada predikat gabungan. Algoritma loop bersarang mengikuti langsung dari definisi. Untuk dua tabel INNER dan OUTER dan predikat join P, nested loop menggabungkan setiap record di OUTER dengan setiap record di INNER dan menyaring setiap record hasil pada P.

SELECT
  *
FROM
  country
  JOIN countrylanguage ON
    True


Baca juga : Saatnya Belajar SQL, Kenali Rekomendasi Query SQL Bagi Pemula


2. Hash Join

Untuk kueri dengan equijoin — atau gabungan yang secara eksklusif menggunakan operator kesetaraan — loop bersarang bisa lebih lambat dari yang diperlukan. Alih-alih mengulangi setiap catatan di tabel dalam untuk setiap catatan di luar, hash join membangun tabel hash sementara untuk mengindeks nilai bidang yang kesetaraannya sedang diuji.


Ini menghemat waktu dengan mengorbankan memori. Tabel luar menerapkan fungsi hash pada bidang perbandingan dan menavigasi ke nilai tersimpan yang cocok yang dibuat pada langkah sebelumnya, mengurangi jumlah rekaman yang harus dilintasi.


Untuk membuat setiap kota dipasangkan dengan negaranya, kita dapat melakukan equijoin.

SELECT
  city.name
  , country.name
FROM
  city
  JOIN country ON
    city.countrycode = country.code


3. Merge Join 

Saat tabel menjadi besar, loop bersarang dan hash join bisa menjadi mahal. Kumpulan data besar dengan cepat menggunakan RAM dan memaksa perencana kueri untuk melakukan banyak operasi I/O yang mahal untuk memindahkan data masuk dan keluar dari memori. Untuk kasus ini, perencana kueri kemungkinan akan menggunakan gabungan gabungan.


Seperti hash join, merge join terdiri dari dua langkah. Pertama, kedua tabel gabungan diurutkan berdasarkan atribut join. Ini dapat dilakukan hanya dengan dua kali melewati setiap tabel melalui pengurutan gabungan eksternal.


Akhirnya, tupel hasil dihasilkan saat elemen berurutan berikutnya ditarik dari setiap tabel dan atribut gabungan dibandingkan.


Untuk melihat penggabungan bergabung dalam tindakan, kami menggabungkan dua tabel besar dengan membuat kueri untuk menghitung berapa banyak pasangan kota unik yang jumlah populasinya sama dengan perbedaan populasi dua kota unik.


CREATE
  VIEW sum_any2 AS SELECT city1.population + city2.population
    AS pop
  FROM
    city AS city1
    , city AS city2
  WHERE
    city1.id < city2.id
CREATE
  VIEW diff_any2 AS SELECT city1.population - city2.population
    AS pop
  FROM
    city AS city1
    , city AS city2
  WHERE
    city1.population > city2.population


4. OUTER JOIN

Outer Join  termasuk Left Outer Join , Right Outer Join , dan Gabung Penuh. Silakan lihat gambar di atas untuk poin yang berbeda dari setiap join.


Left Outer Join  mengembalikan semua baris di tabel kiri, terlepas dari apakah baris ini cocok dengan tabel kanan. Data dibagi menjadi dua kategori: data yang cocok dengan tabel yang tepat dan data yang tidak cocok dengan tabel yang tepat.


Untuk data pada perpotongan tabel kiri dan kanan yang cocok dengan tabel kanan, kolom dari tabel kiri dan kanan adalah outputnya masing-masing. Untuk data yang tidak berada pada perpotongan atau tidak cocok dengan tabel kanan, nilai kolom tabel kiri adalah output, dan nilai kolom tabel kanan adalah nol. Left Outer Join  tidak mengizinkan Pertukaran tabel kiri dan kanan.


Right Outer Join  dan Left Outer Join  simetris. Ini mengembalikan semua baris tabel kanan, terlepas dari apakah baris data ini cocok dengan tabel kiri. Data ini dibagi menjadi dua kategori: data yang cocok dengan tabel kiri dan data yang tidak cocok dengan tabel kiri.


Untuk data pada perpotongan tabel kiri dan kanan yang cocok dengan tabel kiri, kolom tabel kiri dan kanan adalah output. Untuk baris yang tidak berada di persimpangan, kolom tabel kanan biasanya ditampilkan, sedangkan kolom tabel kiri adalah nol. Right Outer Join  tidak mengizinkan Pertukaran tabel kiri dan kanan. Namun, Left Outer Join  dan Right Outer Join  adalah simetris.


Baca juga : Catat! Ini 3 Keuntungan Belajar SQL dalam Mengolah Data


Belajar memulai karir sebagai praktisi data science dengan menggunakan Python, R dan SQL sederhana dengan sign up dan login melalui DQLab Academy! Yuk nikmati kemudahan belajar tanpa ribet melalui live code editor DQLab. Belajar sambil buat portfolio dengan modul DQLab! 


Signup sekarang atau isi form dibawah ini ya Sahabat DQ!

Mulai Karier
sebagai Praktisi
Data Bersama
DQLab

Daftar sekarang dan ambil langkah
pertamamu untuk mengenal
Data Science.

Buat Akun


Atau

Sudah punya akun? Login