Udostępnij za pośrednictwem


łączyć Filtry

A łączyć filtr umożliwia tabela, które należy filtrować zależnie od tego, jaki zastosowano filtr w tabela pokrewnej w publikacja.Zazwyczaj tabela nadrzędnej jest filtrowany przy użyciu filtru sparametryzowana; następnie jeden lub więcej filtrów łączyć są zdefiniowane w podobny sposób definiuje się łączyć między tabelami.Filtry łączyć rozszerzyć sparametryzowana filtr tak, aby dane w tabelach pokrewnych są replikowane tylko pasujący Klauzula filtr łączenia.

Filtry łączyć zazwyczaj wykonaj podstawowego klucz i obcego relacji kluczy zdefiniowanych dla tabel, do których są stosowane, ale nie są one ograniczone wyłącznie do podstawowego klucz i obcego relacji kluczy.łączyć Filtr może być oparty na dowolnym logiki, która porównuje powiązanych danych w dwóch tabelach.

Należy wziąć pod uwagę następujące tabele w Adventure Works Przykładowa baza danych, które są związane za pośrednictwem klucz podstawowy relacji kluczy obcych:

  • HumanResources.Employee

  • Sales.SalesOrderHeader

  • Sales.SalesOrderDetail

Tabele te można stosować w aplikacji do obsługi mobilnych pracowników działu sprzedaży, ale muszą one być filtrowane tak, to każdy sprzedawca w HumanResources.Employee tabela odbiera tylko dane dotyczące zamówień swoich klientów.

Pierwszym krokiem jest określenie sparametryzowana filtr w tabela nadrzędnej, czyli w tym przykładzie HumanResources.Employee tabela.Ta tabela zawiera kolumna LoginID, która zawiera identyfikator logowania dla każdego pracownika w postaci domena\login.Aby filtrować w tej tabela, dzięki czemu każdy pracownik otrzymuje tylko dane związane z nimi, określić klauzula sparametryzowana filtru:

LoginID = SUSER_SNAME()

Ten filtr daje pewność, że subskrypcja każdego pracownika zawiera tylko dane z HumanResources.Employee tabela, która odnosi się do pracownika (która jest w tym przypadek jeden wiersz).Aby uzyskać więcej informacji zobacz Sparametryzowana filtry wierszy.

Następnym krokiem jest rozszerzyć ten filtr do każdej z tabel związanych relacją, stosując składnię podobną do tej służy do określania łączyć między dwiema tabelami.Pierwszy łączyć klauzula filtru jest:

Employee.EmployeeID = SalesOrderHeader.SalesPersonID

Dzięki temu subskrypcja zawiera tylko zamówienia dane istotne dla każdego sprzedawcy.Drugi łączyć klauzula filtru jest:

SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID

Dzięki temu subskrypcja zawiera wyłącznie dane szczegółowe, związane z danymi zamówienia dla każdego sprzedawcy.W tym przykładzie przedstawiono pojedynczej tabela, przy czym ed łączyć w każdym punkcie; możliwe jest także łączyć więcej niż jedną tabela w każdym punkcie.

łączyć filtry mogą być dodawane po kolei za pomocą Kreatora nowej publikacja, Właściwości publikacja , okno dialogowe lub mogą być dodawane programowo.Można je również wygenerować automatycznie za pomocą Kreatora nowej publikacja: należy określić filtr wiersza tabela, a łączyć filtry są stosowane do wszystkich powiązanych tabel.

Optymalizacja łączyć filtr wyników

łączyć wydajności filtru może zostać zoptymalizowana według poniższych wskazówek:

  • Ogranicz liczbę tabel hierarchii filtr łączenia.

    Filtry łączyć może obejmować dowolną liczbę tabel, ale filtry z dużą liczbą tabel może znacznie obniżyć wydajność podczas przetwarzania korespondencji seryjnej.Jeśli filtry łączyć pięć lub więcej tabel jest generowany, należy wziąć pod uwagę innych rozwiązań: nie Filtruj tabel, które są małe, nie mogą zostać zmienione lub są przede wszystkim tabele przeszukiwania. Za pomocą filtrów łączyć między tabelami, które muszą być podzielone na partycje między subskrypcji.

  • zestaw Unikatowy klucz łączyć Opcja Wartość true odpowiednim.

    Proces korespondencji seryjnej składa się z optymalizacji wydajności specjalne dostępna, jeśli sprzężone kolumna w obiekcie nadrzędnym jest unikatowy.Jeśli w warunek łączyć jest oparty na kolumnie unikatowe, należy ustawić Unikatowy klucz łączyć opcji filtr łączenia.Aby uzyskać informacje dotyczące ustawiania tej opcji Zobacz jak to zrobić tematy wymienione w poprzedniej sekcji.

  • Upewnij się, że w kolumnach, do którego odwołuje się filtry łączyć są indeksowane.

    Jeśli w kolumnach, odwołanie do filtru są indeksowane, replikacja można efektywniej procesu filtrów.

  • Nie należy tworzyć filtrów wierszy, które naśladować filtry łączyć.

    Istnieje możliwość utworzenia filtrów wierszy, które naśladować łączyć filtrów przy użyciu podkwerenda w klauzula WHERE, takie jak:

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

    Zdecydowanie zaleca się, że taka logika wyrażone w filtrze łączyć, a nie podkwerenda.Jeśli aplikacja wymaga filtr wiersza, aby użyć subsquery, upewnij się, podkwerendę odwołuje się tylko wyszukiwania danych, który nie ulega zmianie.