UNION vs UNION ALL
Perbedaan penghapusan duplikat dan kinerja, serta alasan UNION ALL biasanya dimaksudkan.
UNION vs UNION ALL adalah pelajaran Coding Interview Prep gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Coding Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Coding Interview Prep mencakup 4 pelajaran total.
Mengapa Pewawancara Menanyakan UNION
Operasi himpunan menumpuk satu set hasil di atas set hasil lainnya secara vertikal. UNION dan UNION ALL adalah operator himpunan pertama yang biasanya digunakan pewawancara karena perbedaan keduanya dapat dijelaskan dalam satu baris dan menunjukkan apakah Anda memahami biaya.
Pertanyaan ini hampir selalu dirumuskan sebagai: "Apa perbedaan antara UNION dan UNION ALL, dan mana yang harus Anda gunakan?" Jawaban yang kuat menyebutkan penghapusan duplikat, pengurutan, dan kinerja sekaligus.
Fungsi UNION
UNION menggabungkan baris dari dua kueri menjadi satu set hasil, lalu menghapus baris duplikat. Dua baris hanya dianggap duplikat jika setiap kolomnya cocok.
Untuk menghapus duplikat, mesin harus mengurutkan atau menghitung hash pada semua baris gabungan, yang memerlukan pekerjaan nyata. UNION mengembalikan himpunan dalam pengertian matematis: tanpa pengulangan.
SELECT city FROM customers
UNION
SELECT city FROM suppliers;Fungsi UNION ALL
UNION ALL menggabungkan dua set hasil dan mempertahankan setiap baris, termasuk duplikat. Operator ini tidak melakukan penghapusan duplikat, sehingga tidak melakukan pengurutan atau penghitungan hash untuk tujuan tersebut.
Karena melewati langkah penghapusan duplikat, UNION ALL hampir selalu lebih cepat dan merupakan pilihan yang tepat ketika Anda tahu baris tidak mungkin saling tumpang tindih atau ketika duplikat memang diinginkan.
SELECT city FROM customers
UNION ALL
SELECT city FROM suppliers;Perbedaan Kinerja
Inti jawaban wawancaranya: UNION ALL lebih murah karena tidak pernah menghapus duplikat. UNION harus membandingkan setiap baris gabungan dengan baris lainnya untuk menghapus pengulangan.
UNION= UNION ALL + langkah DISTINCT implisit.- Pada set hasil yang besar, DISTINCT tersebut dapat mendominasi biaya kueri.
Jika Anda tidak memerlukan penghapusan duplikat, menggunakan UNION akan memboroskan CPU dan memori.
Contoh Lengkap dengan Duplikat
Misalkan kedua kueri dapat mengembalikan baris 'Paris'. Dengan UNION, Anda mendapatkan satu Paris. Dengan UNION ALL, Anda mendapatkan Paris dua kali.
Pewawancara senang meminta Anda memprediksi jumlah baris. Selalu bayangkan penggabungan mentah terlebih dahulu, lalu tanyakan: apakah operator menghapus pengulangan?
-- customers.city: Paris, Lyon
-- suppliers.city: Paris, Nice
-- UNION -> Paris, Lyon, Nice (3 rows)
-- UNION ALL -> Paris, Lyon, Paris, Nice (4 rows)Duplikat Ditentukan di Semua Kolom
Kesalahan umum: dua baris hanya dianggap duplikat jika setiap kolom yang dipilih sama. Tambahkan satu kolom yang berbeda dan baris tersebut tidak lagi menjadi duplikat, sehingga UNION akan mempertahankan keduanya.
Itulah sebabnya SELECT id, city sering mengembalikan lebih banyak baris daripada SELECT city dengan UNION, bahkan pada tabel yang sama.
SELECT id, city FROM customers
UNION
SELECT id, city FROM suppliers;
-- ids differ -> few or no duplicates removedMengurutkan Hasil Gabungan
Anda tidak dapat menempatkan ORDER BY pada setiap cabang; klausa tersebut berlaku untuk seluruh hasil gabungan dan harus muncul satu kali di bagian paling akhir.
Pewawancara mungkin menanyakan letak ORDER BY. Jawabannya: satu ORDER BY setelah kueri terakhir, yang merujuk pada kolom keluaran berdasarkan nama atau posisi.
SELECT city FROM customers
UNION ALL
SELECT city FROM suppliers
ORDER BY city;Nama Kolom Berasal dari Kueri Pertama
Saat merujuk kolom dalam ORDER BY terakhir, gunakan nama (atau alias) dari SELECT pertama. Nama kolom kueri kedua diabaikan untuk pelabelan keluaran.
Hal ini penting ketika cabang-cabang tersebut memberi nama kolom secara berbeda. Beri alias pada cabang pertama untuk mengatur nama kolom keluaran.
SELECT city AS location FROM customers
UNION ALL
SELECT town FROM suppliers
ORDER BY location;Kapan UNION Merupakan Pilihan yang Tepat
Gunakan UNION hanya ketika baris yang tumpang tindih benar-benar mungkin terjadi dan Anda ingin setiap baris berbeda muncul satu kali. Contohnya, menggabungkan dua daftar kontak ketika orang yang sama mungkin muncul di keduanya, atau membuat daftar nilai berbeda tanpa duplikasi dari beberapa sumber.
Jika Anda dapat memastikan sumber-sumber tersebut tidak beririsan, UNION ALL menghasilkan hasil yang sama dengan lebih cepat.
SELECT email FROM web_signups
UNION
SELECT email FROM store_signups;
-- one row per distinct email across bothKapan UNION ALL Merupakan Pilihan yang Tepat
Gunakan UNION ALL ketika duplikat tidak mungkin terjadi, ketika duplikat memiliki makna, atau ketika Anda akan melakukan agregasi setelahnya. Pola klasiknya adalah menumpuk tabel partisi bulanan yang tidak memiliki baris yang sama.
Kiat wawancara: nyatakan bahwa UNION ALL adalah pilihan baku dan Anda hanya beralih ke UNION jika deduplikasi benar-benar diperlukan.
SELECT * FROM sales_2023
UNION ALL
SELECT * FROM sales_2024;Memadukan Semuanya
Jawaban wawancara yang baik terdengar seperti: "UNION menghapus baris duplikat, sehingga memerlukan pengurutan atau pembuatan nilai hash; UNION ALL mempertahankan semuanya dan lebih cepat. Keduanya memerlukan jumlah kolom yang sama dan tipe yang kompatibel, dan setiap ORDER BY ditempatkan sekali di bagian akhir. Saya menjadikan UNION ALL sebagai pilihan baku, kecuali jika deduplikasi diperlukan."
Kalimat tunggal itu menunjukkan ketepatan dan pemahaman terhadap kinerja secara bersamaan.
Pemeriksaan Singkat
Uji pemahaman Anda tentang perbedaan UNION dan UNION ALL.
Ringkasan
Pokok-pokok penting:
UNION= gabungkan + hapus baris duplikat (DISTINCT implisit, biaya tambahan).UNION ALL= gabungkan dan pertahankan semuanya, lebih cepat, pilihan baku yang masuk akal.- Duplikat mengharuskan semua kolom cocok.
- Satu
ORDER BYditempatkan di bagian paling akhir dan menggunakan nama kolom dari kueri pertama.
Jadikan UNION ALL sebagai pilihan baku; beralih ke UNION hanya jika deduplikasi benar-benar diperlukan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “UNION vs UNION ALL” gratis?
Ya — teks lengkap “UNION vs UNION ALL” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Coding Interview Prep, upgrade ke CoddyKit PRO. Kursus Coding Interview Prep mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “UNION vs UNION ALL”?
Perbedaan penghapusan duplikat dan kinerja, serta alasan UNION ALL biasanya dimaksudkan. Kamu berlatih Coding Interview Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Coding Interview Prep?
Tidak diperlukan pengalaman sebelumnya. Coding Interview Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “UNION vs UNION ALL” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Coding Interview Prep ini?
Ya. Setiap pelajaran Coding Interview Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- UNION vs UNION ALL
- Jumlah dan Kompatibilitas Tipe Kolom
- INTERSECT dan EXCEPT untuk Perbandingan
- Meniru Operasi Himpunan dengan JOIN