Bu makalede MSSQL Server Execution Plan Concatenation Operatörünü detaylı bir şekilde görmüş olacağız. Bu operatör birden fazla sorgu sonucunu birleştirmek için kullanılmaktadır. Union All operatörünü sorgularımızda kullandığımızda sıkça karşılaşacağımız Concatenation operatörü fiziksel bir operatör olup kullandığımız sorgulardaki sonuçları satır satır kopyalayarak yeni bir sonuç kümesi üretir. Kopyalama işlemini yaparken herhangi bir kontrol yapılmaz ve kopyalama işlemi kullanılan tüm sorguların sonucu bitene kadar devam eder.

Bu operatör, üstteki veri kümesinin tüm satırlarını okur ve çıkışa gönderir, ardından sırasıyla altındaki veri kümelerine geçer. Herhangi bir sıralama veya “duplicate” (tekrar eden kayıt) kontrolü yapmaz.
Yukarıdaki sorgumuzda iki tablomuz Clustered Index Scan yapısı ile alındıktan sonra Concatenation operatörüyle birleştirme işlemine geçilmiştir.
İlgili operatörün Tooltip penceresi aşağıda görüldüğü gibidir.

Output List ekranından Union ifadesinde dönen sonuçların geldiğini görmüş oluyoruz.
Son derece hızlıdır çünkü veri üzerinde işlem yapmaz (sıralama, karşılaştırma vb.). Sadece veriyi “akıtır”. “Non-blocking” bir operatördür. Yani tüm verinin gelmesini beklemez, okuduğu satırı anında bir sonraki operatöre iletir. Bellek kullanımı düşüktür. Gelen verilerin sırasını korumayı garanti etmez. Eğer bir sıralama gerekiyorsa, plana ek bir Sort operatörü dahil olur ki bu maliyeti artırır.
Veri kümeleri arasında aynı kayıtlar varsa bunları ayıklamaz (UNION yerine UNION ALL gibi davranır). Eğer sonuç kümesinde mükerrer (duplicate) kayıt olmayacağından eminseniz veya mükerrer olması sorun teşkil etmiyorsa her zaman UNION ALL kullanın. UNION kullanırsanız, SQL Server araya bir Distinct Sort veya Hash Match operatörü koyar ki bu performansı ciddi şekilde düşürür.
Birleştirilen kolonların veri tiplerinin (örneğin INT ile VARCHAR) aynı olduğundan emin olun. Aksi takdirde SQL Server, gizli bir veri tipi dönüşümü (Implicit Conversion) yaparak performansı yavaşlatabilir.
Bu makalede sql server execution plan yapılarından biri olan Concatenation yapısını görmüş olduk. Başka bir makalede görüşmek dileğiyle..
“O, gökleri görebileceğiniz herhangi bir destek olmadan (duracak şekilde) yarattı, sizi dengede tutması için yere sağlam dağlar yerleştirdi, orada her türlü canlının çoğalmasını sağladı. Biz, gökten su indirip (bununla) yeryüzünde her türden faydalı bitkiler bitirdik.”Lokman-10
