如果我向SQL Server 2005提交一个查询,其中包含许多LEFT JOIN子句,其中表连接的那些从未被引用,那么连接是否仍然会发生,或者SQL Server是否足够智能以丢弃它们?
显然它无法丢弃INNER JOIN [错误的假设!因为这可能会改变结果,但它可以为LEFT JOIN做吗?
答案 0 :(得分:4)
通过检查约束,可以放弃 INNER和LEFT JOIN。如果您不使用表中的列并且(FK)约束存在保证的单行,则不需要使用该表。显然这取决于查询,表可能仍然被使用,因为它是最好的计划。
这是约束tremendously useful and should be considered more frequently的另一个原因,而不是设计中的约束。
答案 1 :(得分:3)
如果匹配很多,左连接可能会使结果集倍增。
因此,它仍然会被评估。