Udostępnij za pośrednictwem


Dołącz filtry

A filtr łączyć umożliwia tabela filtrowanie oparte na sposób filtrowania tabela pokrewnej w publikacja.Zazwyczaj tabela nadrzędnej jest filtrowana z zastosowaniem filtru sparametryzowana; następnie jeden lub więcej filtrów łączyć są zdefiniowane w bardzo ten sam sposób definiowania łączyć między tabelami.filtr łączyćs rozszerzyć sparametryzowana filtr tak, aby dane w tabelach pokrewnych są replikowane tylko, jeśli jest on zgodny z filtr łączyć klauzula.

Dołącz filtry zazwyczaj postępuj zgodnie z klucz podstawowy/ zdefiniowane relacje klucz obcy dla tabel, do których są one stosowane, ale nie są one ograniczone wyłącznie do klucz podstawowy/ obcego relacji klucza.filtr łączyć Może być oparta na dowolnym logiki, która porównuje powiązanych danych w dwóch tabelach.

Należy rozważyć następujące tabele w Adventure Works Przykładowa baza danych, które są powiązane przez klucz podstawowy klucz obcy relacji:

  • HumanResources.Employee

  • Sales.SalesOrderHeader

  • Sales.SalesOrderDetail

Tabele te mogą być używane w aplikacji do obsługi przenośnego działu sprzedaży, ale muszą zostać przefiltrowane tak, że każdy sprzedawca w HumanResources.Employee tabela odbiera tylko dane istotne dla ich klientów zamówienia.

Pierwszym krokiem jest określenie sparametryzowana filtr w tabela nadrzędnej, która w tym przykładzie jest HumanResources.Employee tabela.Ta tabela zawiera kolumna LoginID, który zawiera identyfikator logowania dla każdego pracownika w formularzu domena\login.Do filtrowania tabela tak, aby każdy pracownik otrzyma tylko dane z nimi związane, określ klauzula sparametryzowana filtru:

LoginID = SUSER_SNAME()

Filtr ten zapewnia subskrypcja każdego pracownika zawiera tylko dane z HumanResources.Employee tabela odpowiedniego pracownika (czyli w tym przypadek jeden wiersz).Aby uzyskać więcej informacji, zobacz Filtry parametrami wiersza.

Następnym krokiem jest rozszerzyć ten filtr, aby każda z tabel związanych relacją, używając składni podobnej do tej stosowanej do określania łączyć między dwoma tabelami.Pierwszy filtr łączyć klauzula jest:

Employee.EmployeeID = SalesOrderHeader.SalesPersonID

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

SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID

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

Sprzężenia filtry mogą być dodawane w czas za pomocą nowego Kreatora publikacji i Właściwości publikacji okno dialogowe lub można dodać programistycznie.Te mogą być też generowane automatycznie przez Kreatora nowej publikacji: Określ filtr wiersza tabela i łączyć filtry są stosowane do wszystkich powiązanych tabel.

Optymalizacja wydajności filtr sprzężenia

Dołącz działania filtrów można zoptymalizować według poniższych wskazówek:

  • Ogranicz liczbę tabel w filtr łączyć hierarchii.

    Filtry sprzężenia może obejmować nieograniczoną liczbę tabel, ale filtry z dużą liczbą tabel może znacząco obniżyć wydajność podczas przetwarzania korespondencji seryjnej.Generowania filtry łączyć pięć lub więcej tabel, należy wziąć pod uwagę innych rozwiązań: nie Filtruj tabel, które są małe, nie podlegające zmianom lub są głównie tabele przeszukiwania.Za pomocą filtrów łączyć tylko między tabelami, które musi być podzielony między subskrypcji.

  • Ustaw łączyć unikatowy klucz opcji True gdzie stosowne.

    Proces scalania ma specjalne performance optimizations dostępne, jeśli sprzężone kolumna w obiekcie nadrzędnym jest unikatowa.Jeśli warunek łączyć jest oparty na niepowtarzalną kolumna zestaw łączyć unikatowy klucz opcji filtru łączyć.Informacje dotyczące ustawiania tej opcji w tematach opisujących wymienione w poprzedniej sekcji.

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

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

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

    Jest możliwe tworzenie filtrów wierszy, które naśladować łączyć filtrów przy użyciu podzapytanie w klauzula WHERE, takie jak:

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

    Zdecydowanie zaleca się wyrażone w takich logiki filtr łączyć zamiast podzapytanie.Jeśli aplikacja wymaga filtr wiersza, aby użyć subsquery, upewnij się, że podzapytanie odwołuje się tylko wyszukiwanie danych, która nie zmienia.