Aracılığıyla paylaş


Süzgeçleri katılın.

A birleştirmek filtresi Süzülecek tablo bağlı bir ilişkili tabloda yayın nasıl süzülür sağlar.Genellikle parametreli hale getirilmiş bir süzgeç kullanarak ana tablo süzülür, sonra bir veya daha çok birleştirmek süzgeci çok tablo arasında birleştirmek tanımlamak aynı şekilde tanımlanır.Böylece eşleşirse, ilişkili tablolardaki verilerin yalnızca çoğaltılmış birleştirmek filtresi s genişletme parametreli süzgeç birleştirmek filtresi yan tümce.

birleştirmek süzgeçleri, genellikle birincil anahtara yabancı anahtar ilişkileri, uygulandığı tablolar için tanımlanmış izleyin, ancak yalnızca birincil anahtara yabancı anahtar ilişkileri ile sınırlı değildir.Iki tablodaki ilgili verileri karşılaştıran bir mantığı birleştirmek filtresi temel alabilir.

Aşağıdaki tablolarda dikkate Adventure Works Örnek veritabanı ile birincil anahtar için yabancı anahtar ilişkileri ilgili:

  • HumanResources.Employee

  • Sales.SalesOrderHeader

  • Sales.SalesOrderDetail

Bu tabloları bir uygulamada hareketli bir satış ekibi desteklemek için kullanılabileceği ancak, bu nedenle, her filtre gerekir, satış elemanı HumanResources.Employee tablo, yalnızca kendi müşterilerin siparişleri için geçerli verileri alır.

Ilk adım, bu örnekte ana tablo parametreli hale getirilmiş bir süzgeç tanımlamaktır HumanResources.Employee tablosudur.Bu tablo sütun içerir. LoginIDbiçiminde her çalışan için oturum açma'yı içeren etki alanı\login.Bu tablo, her çalışan için ilgili verileri alır, süzmek için bir parametreli filtre yan tümce belirtin:

LoginID = SUSER_SNAME()

Bu süzgeç, her çalışanın abonelik yalnızca veri içeren sağlar HumanResources.Employee (Bu durumda bu tek bir satır) o çalışanla ilgili tablosudur. Daha fazla bilgi için bkz: Parametreli satır süzgeçleri.

Her iki tablo arasındaki birleştirmek belirtmek için kullanılan benzer bir sözdizimi kullanarak ilişkili tabloların, bu süzgeci genişletmek için sonraki adıma olur.Ilk birleştirmek filtresi yan tümce ise:

Employee.EmployeeID = SalesOrderHeader.SalesPersonID

Bu, yalnızca sipariş verilerini her satışçının ilgili abonelik içeren sağlar.Ikinci birleştirmek filtresi yan tümce ise:

SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID

Bu abonelik için sipariş verilerini, her satışçının ilgili ayrıntı verilerini içeren sağlar.Bu örnek, her bir noktada birleştirilmiş tek bir tablo gösterir; her noktasında birden fazla tablo katılmaya olasıdır.

Bir defada bir Yeni Yayın Sihirbazı aracılığıyla birleştirmek süzgeçler eklenebilir ve Yayını özellikleri iletişim kutusunda veya program aracılığıyla eklenir.Bunlar da otomatik olarak yeni bir yayın Sihirbazı oluşturulabilir: bir tablo için satır süzgeç belirtin ve birleştirmek süzgeçleri ilgili tüm tablolar için uygulanır.

birleştirmek filtresi performansı en iyi duruma getirme

birleştirmek filtresi Aşağıdaki yönergeleri izleyerek performansı iyileştirilmiş:

  • Tabloları birleştirmek filtresi sıradüzeninde sayısını sınırlayın.

    birleştirmek süzgeçleri, sınırsız sayıda tablo içerebilir, ancak çok sayıda tablo filtreleriyle, birleştirmek işlemi sırasında performansı önemli ölçüde etkileyebilir.Beş veya daha fazla tabloyu birleştirmek süzgeçleri oluşturma diğer çözümleri göz önünde bulundurun: küçük değil değiştirilebilir veya birincil olarak arama tabloları tablolara filtre. Abonelikler arasında bölümlenmelidir tablolar arasındaki birleştirmek süzgeçleri kullanın.

  • küme birleştirmek için tekil anahtar seçeneğiDoğru burada uygun.

    Birleştirme işleminde, birleştirilen üst sütundaki benzersiz olması durumunda kullanılabilir özel performans iyileştirmeleri vardır.birleştirmek koşulunu, benzersiz sütun temel alan, küme birleştirmek için tekil anahtar seçeneği birleştirmek filtresi.Bu seçenek hakkında daha fazla bilgi için önceki bölümde listelenen nasıl yapılır konularını.

  • Sütunları birleştirmek filtrelerini başvurulan dizinlenmiştir emin olun.

    Süzgeç başvurulan sütunları dizinlenmiştir, çoğaltma filtreleri daha verimli bir şekilde işleyebilir.

  • birleştirmek süzgeçleri taklit satır süzgeçleri oluşturun.

    Alt sorgu gibi bir WHERE yan tümcesini kullanarak, birleştirmek süzgeçleri taklit satır süzgeçler oluşturmak mümkündür:

    WHERE Customer.SalesPersonID IN (SELECT EmployeeID FROM Employee WHERE LoginID = SUSER_SNAME()) 
    

    Bu tür mantık birleştirmek süzgeçle yerine alt sorgu, ifade önerilir.Alt sorgu yalnızca değişmez arama veri başvuran bir subsquery kullanmak için bir satır filtre uygulamanız gerekiyorsa emin olun.