SQL Server 2005 – 内部联接的顺序

前端之家收集整理的这篇文章主要介绍了SQL Server 2005 – 内部联接的顺序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在Where子句中有一个包含三个内连接语句的查询.查询大约需要2分钟才能执行.如果我只是改变两个内连接的顺序,性能下降到40秒.

除了改变内连接的顺序之外怎么做才能对查询性能产生如此巨大的影响?我原本以为优化器会想出这一切.

解决方法

sql是声明性的,也就是说,JOIN顺序无关紧要.

但是,实际上,如果它是一个复杂的查询,当优化器没有探索所有选项(理论上可能需要几个月)时,它可以在实践中.

另一个选择是,如果你重新排序并得到不同的结果,它是一个非常不同的查询,但这通常是使用OUTER JOINs.

它也可以是指定ON子句的方式如果重新排序FROM子句,它必须改变.除非您使用旧的(和坏的)JOIN-in-the-WHERE子句.

最后,如果这是一个问题,您可以使用括号来更改评估顺序,以使您的意图明确,比如,首先过滤大表以生成派生表.

猜你在找的MsSQL相关文章