Aracılığıyla paylaş


Karma anlama birleşimler

Karma birleştirmek iki girdi vardır: Yapı, giriş ve giriş. araştırması Yapı giriş iki girişi daha küçük olması, bu rolleri sorgu iyileştirici atar.

Karma birleşimler birçok ayarla eşleşen işlemler için kullanılır: iç birleştirmek, sola, sağa ve tam dış birleştirmek; sol ve sağ semi-birleştirmek, kesişim, birleştirmek; ve farkı. Ayrıca, bir değişken karma birleştirmek yapmak için çoğaltma kaldırma ve gruplama, SUM(salary) GROUP BY bölümü gibi.Bu değişiklikleri tek bir giriş için yapı ve yoklama rolleri kullanın.

Karma birleşimler farklı türleri aşağıdaki bölümlerde açıklanmıştır: bellek karma birleştirmek, yetkisiz karma birleştirmek ve özyinelemeli karma birleştirmek.

Bellek karma birleştirmek

Karma birleştirmek önce tarar veya giriş tüm yapı hesaplar ve sonra da bir karma değeri oluşturur tablo bellekte.Her satır bir karma Demet karma anahtar için hesaplanan karma değerine eklenir.Tüm yapı giriş bellek küçükse, tüm satırları karma tabloya eklenebilir.Bu yapı aşaması tarafından yoklama aşaması gelir.Tüm yoklama giriş taranan veya bir satırı aynı anda ve yoklama her satır için hesaplanan hesaplanan karma anahtarının değer, ilgili karma Demet taranır ve eşleri üretildiğini.

İzin verilen karma birleştirmek

Karma birleştirmek oluşturma giriş belleğe sığmayan, birkaç adımda devam eder.Bu, yetkisiz karma birleştirmek bilinir.Her adım, bir yapı evresi ve yoklama aşama vardır.Başlangıçta tüm yapı ve yoklama girdileri tüketilen ve birden çok dosya bölümlenmiş (karma tuşlar, karma işlev kullanarak).Karma tuşlar, karma işlev kullanılarak iki birleşme kayıt dosyalarının aynı çiftinin olmasını güvence altına alır.Bu nedenle, iki büyük giriş birleştirme görev için birden çok, ancak küçük örnekleri görevini düşürüldü.Karma birleştirmek bölümlenmiş dosyaları için iki sonra uygulanır.

Yinelenen karma birleştirmek

Yapı giriş girişleri standart dış birleştirme için birden çok birleştirme düzeyleri gerektirecek kadar büyük olması durumunda, birden çok bölümleme adım ve birden çok bölümleme düzeyi gereklidir.Bölümleme ek adımlar, yalnızca bazı bölümlerini büyük olan, yalnızca bu belirli bölümler için kullanılır.Bölümleme tüm adımları mümkün olduğu kadar hızlı yapmak için böylece tek bir iş parçacığı birden çok disk sürücüsü meşgul tutabilmek büyük, zaman uyumsuz g/Ç işlemlerinde kullanılır.

Not

Yapım girdisi yalnızca bellek göre biraz daha büyük ise, bellek içi karma birleştirmek ve yetkisiz karma birleştirmek öğelerini karma karma birleştirmek oluşturmanın tek bir adımda birleştirilir.

Her zaman hangi karma birleştirmek kullanıldığını belirlemek için en iyileştirme sırasında olası değildir.Bu nedenle,SQL Serverbir bellek içi karma birleştirmek kullanarak başlatılır ve yetkisiz karma birleştirmek ve özyinelemeli karma birleştirmek oluşturma giriş. büyüklüğüne göre kademeli geçişler

En iyi hale getirme yanlış anticipates iki giriş, küçük olan ve bu nedenle, yapı giriş verilmiş olması, yapı ve yoklama rollerinin dinamik olarak tersine çevrilir.Karma birleştirmek girdisi oluşturmak gibi daha küçük taşma dosya kullanmasını sağlar.Bu teknik olarak adlandırılır.rol tersine çevirme.Rol tersine karma birleşimi içinde en az bir spill sonra diske oluşur.

Not

Rol ters sorgu ipuçları veya yapı bağımsız ortaya çıkar.Rol ters sorgu planınızda görüntülemez; oluştuğunda, kullanıcı için saydamdır.

Karma bailout

Bu terimkarma bailout bazen yetkisiz karma birleştirme veya yinelenen karma birleşimler. tanımlamak için kullanılır

Not

Yinelenen karma birleştirme veya karma bailouts sunucunuzun performansı düşük neden.Çok gördüğünüzKarma uyarı olayları izleme, birleştirilmiş sütunları güncelleştirme istatistikleri.

Karma bailout hakkında daha fazla bilgi için bkz:Karma uyarı olay sınıfı.