Hash, Merge ve Loop arasındaki fark birleşti mi?


40

SQL Server'da birleştirme ipuçlarını belirleyebilirsiniz:

  • HASH KATIL
  • MERGE BİRLEŞİM
  • DÖNGÜ KATILIMI

Bu üç birleştirme ipucunun tanımı nedir ve ne zaman kullanılmalı?

Yanıtlar:


37

MSDN'den, Gelişmiş Sorgu Ayarlama Kavramları başlığında :

SQL Server, üç tür birleştirme işlemi kullanır:

  • İç içe döngüler birleşimler

  • Birleştirme birleştirmeleri

  • Hash katıldı

Bir birleştirme girişi küçükse (10 satırdan azsa) ve diğer birleştirme girişi oldukça büyükse ve birleştirme sütunlarında dizine eklenmişse, en az G / Ç ve en az karşılaştırma gerektirdikleri için dizin iç içe döngüler birleştirme en hızlı birleştirme işlemidir. Yuvalanmış döngüler hakkında daha fazla bilgi için, bkz. Yuvalanmış Döngü Birleşimlerini Anlama.

İki birleştirme girişi küçük değilse ancak birleştirme sütununda sıralanıyorsa (örneğin, sıralanan dizinleri tarayarak elde edilmişlerse), bir birleştirme birleşim en hızlı birleştirme işlemidir. Her iki birleşme girişi de büyükse ve iki giriş benzer boyutlarda ise, önceki sıralama ile bir birleştirme birleştirme ve bir karma birleştirme benzer performans sunar. Ancak, iki giriş boyutu birbirinden önemli ölçüde farklıysa, karma birleştirme işlemleri genellikle daha hızlıdır. Daha fazla bilgi için, bkz. Birleştirme Birleştirmelerini Anlama.

Karma birleştirmeler büyük, sıralanmamış, dizine eklenmemiş girdileri verimli bir şekilde işleyebilir.

Ancak daha basit bir konu ile başlamanız gerektiğine inanıyorum: Query Tuning ve son olarak da sorgu ipuçlarını kullanmaya devam edin.


5
Kabul edildi, bir katılma ipucunu koymak yalnızca son çare olarak bırakılmalıdır (tahmini veriler gerçek verilerden önemli ölçüde farklıysa bazen yararlı olabilir).
Andrew Bickerton
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.