SQL Server是否会自动丢弃不必要的连接?

时间:2010-07-27 09:56:56

标签: sql-server sql-server-2005 query-optimization

如果我向SQL Server 2005提交一个查询,其中包含许多LEFT JOIN子句,其中表连接的那些从未被引用,那么连接是否仍然会发生,或者SQL Server是否足够智能以丢弃它们?

显然它无法丢弃INNER JOIN [错误的假设!因为这可能会改变结果,但它可以为LEFT JOIN做吗?

2 个答案:

答案 0 :(得分:4)

通过检查约束,可以放弃 INNER和LEFT JOIN。如果您不使用表中的列并且(FK)约束存在保证的单行,则不需要使用该表。显然这取决于查询,表可能仍然被使用,因为它是最好的计划。

这是约束tremendously useful and should be considered more frequently的另一个原因,而不是设计中的约束。

答案 1 :(得分:3)

如果匹配很多,左连接可能会使结果集倍增。

因此,它仍然会被评估。