0Pricing
SQL Interview Prep · Ders

UNION ve UNION ALL Karşılaştırması

Tekilleştirme ve performans farkını, ayrıca neden genellikle UNION ALL kullanılması gerektiğini öğrenin.

UNION ve UNION ALL Karşılaştırması, CoddyKit'te ücretsiz bir SQL Interview Prep dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Interview Prep kursu toplamda 4 dersten oluşur.

Görüşmeciler UNION hakkında neden sorar

Küme işlemleri, bir sonuç kümesini diğerinin üzerine dikey olarak ekler. UNION ve UNION ALL, görüşmecilerin başvurduğu ilk küme işleçleridir; çünkü aralarındaki fark tek satırda yanıtlanabilir ve maliyeti anlayıp anlamadığınızı gösterir.

Soru neredeyse her zaman şöyle ifade edilir: “UNION ile UNION ALL arasındaki fark nedir ve hangisini kullanmalısınız?” Güçlü bir yanıt, tek seferde tekilleştirme, sıralama ve performanstan söz eder.

UNION ne yapar

UNION, iki sorgunun satırlarını tek bir sonuç kümesinde birleştirir ve ardından yinelenen satırları kaldırır. İki satır, yalnızca tüm sütunları eşleşiyorsa yinelenen sayılır.

Yinelenenleri kaldırmak için motorun birleştirilmiş tüm satırları sıralaması veya karma işlemi uygulaması gerekir; bu gerçek bir işlem maliyetidir. UNION, matematiksel anlamda bir küme döndürür: tekrar içermez.

SELECT city FROM customers
UNION
SELECT city FROM suppliers;

UNION ALL ne yapar

UNION ALL, iki sonuç kümesini art arda ekler ve yinelenenler dahil her satırı korur. Tekilleştirme yapmadığından bu amaçla sıralama veya karma işlemi de yapmaz.

Tekilleştirme adımını atladığı için UNION ALL neredeyse her zaman daha hızlıdır. Satırların çakışamayacağını bildiğinizde veya yinelenenleri özellikle istediğinizde doğru seçim budur.

SELECT city FROM customers
UNION ALL
SELECT city FROM suppliers;

Performans farkı

Görüşmede vurgulanması gereken nokta: UNION ALL daha ucuzdur, çünkü hiçbir zaman tekilleştirme yapmaz. UNION, tekrarları kaldırmak için birleştirilmiş her satırı diğerleriyle karşılaştırmalıdır.

  • UNION = UNION ALL + örtük bir DISTINCT adımı.
  • Büyük sonuç kümelerinde bu DISTINCT adımı sorgu maliyetinin büyük bölümünü oluşturabilir.

Yinelenenleri kaldırmanız gerekmiyorsa UNION kullanmak CPU ve bellek israfına yol açar.

Yinelenenlerle örnek çözüm

Her iki sorgunun da 'Paris' satırını döndürebildiğini varsayalım. UNION ile tek bir Paris elde edersiniz. UNION ALL ile Paris iki kez elde edilir.

Görüşmeciler satır sayısını tahmin etmenizi sormayı sever. Önce ham birleştirmeyi gözünüzde canlandırın, ardından işlecin tekrarları kaldırıp kaldırmadığını sorun.

-- customers.city: Paris, Lyon
-- suppliers.city: Paris, Nice
-- UNION     -> Paris, Lyon, Nice   (3 rows)
-- UNION ALL -> Paris, Lyon, Paris, Nice (4 rows)

Yinelenenler tüm sütunlara göre belirlenir

Sık rastlanan bir tuzak şudur: iki satır yalnızca seçilen her sütun eşitse yinelenen sayılır. Farklı bir sütun eklerseniz satırlar artık yinelenen olmaz; UNION ikisini de korur.

Bu nedenle aynı tablolarda bile UNION kullanılırken SELECT id, city sorgusu çoğu zaman SELECT city sorgusundan daha fazla satır döndürür.

SELECT id, city FROM customers
UNION
SELECT id, city FROM suppliers;
-- ids differ -> few or no duplicates removed

Birleştirilmiş sonucu sıralama

ORDER BY ifadesini tek tek sorgu kollarına koyamazsınız; ifade birleştirilmiş sonucun tamamına uygulanır ve en sonda yalnızca bir kez yer almalıdır.

Görüşmeci ORDER BY ifadesinin nereye konulacağını sorabilir. Yanıt şudur: son sorgudan sonra tek bir ORDER BY kullanılır ve çıktı sütunlarına adlarıyla veya konumlarıyla başvurulur.

SELECT city FROM customers
UNION ALL
SELECT city FROM suppliers
ORDER BY city;

Sütun Adları İlk Sorgudan Gelir

Son ORDER BY ifadesinde sütunlara başvururken ilk SELECT ifadesindeki adları (veya takma adları) kullanın. İkinci sorgunun sütun adları, çıktı etiketlemesi için dikkate alınmaz.

Dalların sütunlarını farklı adlandırdığı durumlarda bu önemlidir. Çıktı başlığını denetlemek için ilk dalda takma ad kullanın.

SELECT city AS location FROM customers
UNION ALL
SELECT town FROM suppliers
ORDER BY location;

UNION Ne Zaman Doğru Tercihtir

Örtüşen satırların gerçekten mümkün olduğu ve her farklı satırın bir kez görünmesini istediğiniz durumlarda yalnızca UNION kullanın. Örneğin, aynı kişinin her iki listede de yer alabileceği iki iletişim listesini birleştirmek veya çeşitli kaynaklardan yinelenenleri kaldırılmış farklı değerlerden oluşan bir liste oluşturmak.

Kaynakların ayrık olduğunu garanti edebiliyorsanız, UNION ALL aynı sonucu daha hızlı verir.

SELECT email FROM web_signups
UNION
SELECT email FROM store_signups;
-- one row per distinct email across both

UNION ALL Ne Zaman Doğru Tercihtir

Yinelenenlerin oluşamayacağı, yinelenenlerin anlamlı olduğu veya sonrasında toplama işlemi yapacağınız durumlarda UNION ALL kullanın. Satırları ortak olmayan aylık bölümleme tablolarını üst üste eklemek klasik bir örnektir.

Mülakatlar için ipucu: UNION ALL işleminin varsayılan olduğunu ve yalnızca tekilleştirme gerçekten gerektiğinde UNION kullanımına geçtiğinizi belirtin.

SELECT * FROM sales_2023
UNION ALL
SELECT * FROM sales_2024;

Hepsini Bir Araya Getirme

Özenli bir mülakat yanıtı şöyle olur: "UNION yinelenen satırları kaldırır; bu da sıralama veya karma işlemi gerektirir. UNION ALL her şeyi korur ve daha hızlıdır. Her ikisi de eşleşen sütun sayılarını ve uyumlu türleri gerektirir; ayrıca ORDER BY yalnızca sonda bir kez kullanılır. Tekilleştirme gerekmediği sürece UNION ALL varsayılan tercihimdir."

Bu tek cümle, doğruluk ile performans farkındalığını birlikte gösterir.

Hızlı Kontrol

UNION ile UNION ALL arasındaki ayrımı ne kadar kavradığınızı sınayın.

Özet

Önemli noktalar:

  • UNION = birleştirir ve yinelenen satırları kaldırır (örtük DISTINCT, ek maliyet).
  • UNION ALL = birleştirir ve her şeyi korur; daha hızlıdır ve mantıklı varsayılandır.
  • Yinelenenler için ALL sütunların eşleşmesi gerekir.
  • Tek bir ORDER BY en sonda kullanılır ve ilk sorgunun sütun adlarını kullanır.

UNION ALL işlemini varsayılan kabul edin; yalnızca tekilleştirme gerçekten gerektiğinde UNION kullanımına geçin.

Sıkça Sorulan Sorular

“UNION ve UNION ALL Karşılaştırması” dersi ücretsiz mi?

Evet — “UNION ve UNION ALL Karşılaştırması” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Interview Prep kursu toplamda 4 dersten oluşur.

“UNION ve UNION ALL Karşılaştırması” dersinde ne öğreneceğim?

Tekilleştirme ve performans farkını, ayrıca neden genellikle UNION ALL kullanılması gerektiğini öğrenin. SQL Interview Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Interview Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Interview Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“UNION ve UNION ALL Karşılaştırması” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Interview Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Interview Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. UNION ve UNION ALL Karşılaştırması
  2. Sütun Sayısı ve Tür Uyumluluğu
  3. Karşılaştırma için INTERSECT ve EXCEPT
  4. Küme İşlemlerini Birleştirmelerle Taklit Etme
← SQL Interview Prep Sayfasına Dön