Sql server 2005 SQL Server 2005-对内部或外部查询进行筛选

Sql server 2005 SQL Server 2005-对内部或外部查询进行筛选,sql-server-2005,join,filter,subquery,Sql Server 2005,Join,Filter,Subquery,以SQL Server 2005存储过程为例,该存储过程具有从子查询中选择的外部查询。如果将参数筛选器应用于内部查询,查询是否可能更快地返回,或者仅应用外部查询并让SQL查询引擎制定最佳执行计划,是否有人可以建议我 我不能提出实际的查询,因为它包含业务表/视图名称和列,以及相当多的连接,但本质上,一般的体系结构是 Psuedo Sql CREATE PROCEDURE usp_Blah_GetForDateRange ( @DateFrom smalldatetime , @Da

以SQL Server 2005存储过程为例,该存储过程具有从子查询中选择的外部查询。如果将参数筛选器应用于内部查询,查询是否可能更快地返回,或者仅应用外部查询并让SQL查询引擎制定最佳执行计划,是否有人可以建议我

我不能提出实际的查询,因为它包含业务表/视图名称和列,以及相当多的连接,但本质上,一般的体系结构是

Psuedo Sql

CREATE PROCEDURE usp_Blah_GetForDateRange
(
    @DateFrom   smalldatetime
,   @DateTo     smalldatetime
)
AS
BEGIN
    SELECT
        InnerQuery.MyField
    FROM
        (
            SELECT
                MyField
            FROM
                MyView
            JOIN SomeTableLargeTable ON ....

            JOIN AReferenceTable ON ...

            /* Apply date restriction here on the inner query? */
            WHERE
                EffectiveDate BETWEEN @DateFrom AND @DateTo
        ) InnerQuery

    JOIN
        YetAnotherLargeTable ON ....

    JOIN SomeMoreRefTables ON ....

    /* Or here on the outer? */
    WHERE
        EffectiveDate BETWEEN @DateFrom AND @DateTo;
END
MyView、SomeTableLargeTable和YetAnotherLargeTable都有大约五六百万行


谢谢。

经验法则是越早从查询中排除数据越好。因此,如果不实际运行查询,我会说内部联接

不是很容易测试吗?我可以,但可能需要半天时间才能获得具有正确参数值的代表性数据,因为实际查询很长,带有加载参数和加载联接上的联接!我只是想知道是否值得花时间去尝试!