SQL Server propaga WHERE condições em modos de exibição complexo

Eu segui esta pergunta com um exemplo completo, caso não esteja claro o que quero dizer com el

Fiz uma visão que une dados de cerca de cinco tabelas. As tabelas possuem grandes quantidades de dados e as consultas demoram a ser executadas. Minha pergunta é que se eu fizer:

SELECT * FROM myView WHERE PersonID = 1000 

SQL Server 'sabe o que quero dizer' e propaga automaticamente essa condição para as associações subjacentes na exibição? Para que não corra paratodo o mund, mas minimiza o conjunto de resultados nos estágios certos. Ou será executado para tudo, então faça oWHERE ID = 1000 no conjunto completo de resultados?

UM EXEMPL

Para simplificar (... espero) o que quero dizer, aqui está um exemplo de cenário pseudo-TSQL:

TABLE People (
    ID,
    Surname,
    DOB
)
TABLE Activities (
    ID,
    TypeID,
    LocationID,
    Date
)
TABLE PersonActivityInvolvements (
    ID, 
    PersonID, 
    ActivityID
)
TABLE ActivityTypes (
    ID,
    Name
)
TABLE Locations (
    ID,
    Street,
    City
)

Então, eu quero uma visão que me mostre tudoPeople, qualquerActivities eles estavam envolvidos, oActivityType, e aLocation aconteceu. Embora essa configuração não seja drasticamente complicada, é possível que demore muito tempo para ser executado, se houver dezenas de milhares de cada entidad

A visualização pode ser algo como isto:

SELECT 
    *
FROM 
    People LEFT OUTER JOIN PersonActivityInvolvement PA
    ON People.ID = PA.ID
        INNER JOIN Activity 
        ON PA.ID = Activity.ID
            INNER JOIN ActivityTypes AT
            ON A.TypeID = AT.ID
                INNER JOIN Locations 
                ON A.LocationID = Locations.ID

Então, se fosse fazer

SELECT * FROM myView WHERE DOB >= dateAdd(YEAR, -18, getDate())

a consulta dentro da visualização seria executada para todos ou o SQL Server saberia que deveria aplicá-la aoPeople.DOB campo?

questionAnswers(3)

yourAnswerToTheQuestion